【问题标题】:I am trying to change the IDE for IntelliJ, but It keeps running the wrong version我正在尝试更改 IntelliJ 的 IDE,但它一直运行错误的版本
【发布时间】:2018-11-20 19:24:58
【问题描述】:

我有一个关于软件工程的课程,我们有一个销售系统的 gradle 项目。它需要java 8才能运行,我已经安装在我的电脑上。我也有 java 9,除了那个类,我用它来做其他任何事情。

我有一个似乎无法解决的非常乏味的问题:我似乎无法让 intelliJ 使用 java 8。

我尝试了以下方法:

文件 - 项目结构

在“项目”下 - Java 8

在“模块”下 - 一切都设置为使用 Project SDK (1.8)

在“SDK”下 - 我只有“1.8”

Ctrl + Shift + A -> "切换 IDE 启动 JDK..."

我有 3 个选项:

  1. 1.8.0_152 java (b16) [启动]
  2. 1.8.0_152 openjdk (release-1024-b11)[捆绑]
  3. 1.8.0_181 java (b13)

我已经尝试了所有这些,但仍然没有。

当我打开项目时,它说

C:\Program Files\Java\jdk1.8.0_181\bin\java...

在下方的“运行”选项卡中。但是,当我输入时

java -version

进入“终端”标签,它说

java version "9.0.4"
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)

当我尝试执行任何 gradlew 命令时,例如 hsqlrun

我收到此错误:

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine java version from '9.0.4'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or -- 
debug option to get more log output.

我已经尝试运行我们的主要 gradle.build 文件并且在尝试这些命令之前不运行它,但这并没有什么不同。我们的 build.gradle 文件,如果有帮助的话:

apply plugin: 'java'
apply plugin: 'application'

repositories {
    mavenCentral()
}

version = '1.0'

dependencies {
    compile project(':')
    compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.6.2'
    compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.6.2'
}

mainClassName = 'ee.ut.math.tvt.salessystem.ui.SalesSystemUI'

jar {
    doFirst {
        manifest {
            if (!configurations.runtime.isEmpty()) {
                attributes('Class-Path': configurations.runtime.collect{it.toURI().toString()}.join(' '))
            }
        }
    }
    manifest {
        attributes 'Implementation-Title': 'Gradle Quickstart',
                   'Implementation-Version': version,
                   'Main-Class': mainClassName
    }
}

我的其他团队成员似乎没有问题并且可以很好地运行它。任何帮助将不胜感激。

【问题讨论】:

  • 我不认为更改 IntelliJ Java 项目版本会更改您的终端版本。运行一个程序,打印System.getProperty("java.version"),它说什么?
  • 如果通过 Intellij 运行,请检查 Build, Execution, Deployment > Build Tools > Gradle 中的设置以确保 Gradle 使用正确的 JDK。如果通过终端运行,您可以使用 -Dorg.gradle.java.home=<path> 更改使用的 JDK。
  • @FrznFlms 它打印出 9.0.4
  • @Slaw 我在Build, Execution, Deployment > Build Tools > Gradle 下检查过,我使用的是正确的版本。
  • 如果最坏的情况发生,您可以尝试卸载 Java 9 并运行您的程序。如果任何设置被设置为使用 Java 9,它们要么切换到 Java 8,要么 IntelliJ 会要求您更改它们。一旦你开始工作,你可以重新安装 Java 9 并交叉手指 IntelliJ 不会为你改回来。

标签: java gradle intellij-idea


【解决方案1】:

我认为你必须指定 Gradle 才能使用你想要的 JVM。

进入设置->构建、执行、部署-> Gradle->Gradle JVM并选择你想要的JDK。 (在这个帖子中指出:https://stackoverflow.com/a/43624456/2799066

AFAIK 提供 JVM 和命令行参数也可以在将项目导入想法时进行配置。

【讨论】:

  • 我在Build, Execution, Deployment > Build Tools > Gradle 下检查过,我使用的是正确的版本。
  • 好的,那么我认为您的 JAVA_HOME 环境变量可能有问题。检查它是否指向您的 9.0.4 安装。
  • 之前我什至没有 JAVA_HOME 环境变量,所以我查找了它,创建了它,然后重新启动了我的计算机。现在它设置为 jdk1.8.0_181,但是终端的 java -version 仍然给我 9.0.4 作为答案。
  • IntelliJ IDEA 中的终端窗口独立于任何 IDE 设置。 java 命令不查看 JAVA_HOME 环境变量;相反,命令 shell 只运行在 PATH 环境变量中找到的第一个 java 可执行文件。
【解决方案2】:

我想我成功了。

我点击了文件 -> 新建 -> 来自现有来源的项目 -> 选择了项目文件夹并且我希望覆盖它

然后我设置了启动一个全新的 gradle 项目时打开的初始 gradle 设置,瞧,终端现在可以理解 gradlew 命令了。

然而,奇怪的是 java -version 仍然显示 9.0.4,但至少现在一切似乎都正常了。

Tl;Dr for fix:从现有源创建一个新项目并覆盖当前项目。在设置过程中询问时选择正确的 Java 版本。

【讨论】:

  • java -version 与 IntelliJ 无关。这就像在命令提示符下输入。您没有更改系统默认 jdk,只是更改了编译和运行项目的 JDK。
猜你喜欢
  • 2017-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-11
  • 2017-08-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-26
相关资源
最近更新 更多