13

一个简单的问题,即使经过数小时的尝试和搜索,我也无法弄清楚:

我安装了 Java 6 和 7。

如何告诉 IntelliJ 使用 JDK 1.6 版开始 Gradle 构建?

无论我做什么,IntelliJ 都会不断地开始我的 gradle

"c:\program files\java\jdk1.7.0_10\jre\bin\java" -Dgradle.home=C:\_CODING_\gradle-1.4 [...]

我试过了:

  • 所有项目模块都设置为使用 1.6
  • JAVA_HOME被设定为C:\Program Files\Java\jdk1.6.0_38
  • 设置IDEA_JDK什么也没做
  • gradle -v在命令行上将 1.6 识别为其 JDK
  • 重新启动 IntelliJ 和/或计算机并没有改变行为

是否有避免调用 Java 1.7 的设置?

4

6 回答 6

13

... 2.5 年后:

我正在使用 IntelliJ IDEA 15.0,并且遇到了类似的问题:

此版本的 IDEA 与 JDK 1.8 捆绑在一起,我想在 JDK 1.7 下构建和运行 Gradle 项目

Gradle 使用的 JDK 可以在首选项中进行配置(之前可能不是这样):

IDEA > 首选项 > 构建、执行、部署 > 构建工具 > Gradle

...在“使用本地 gradle 分发”下,您应该看到“Gradle JVM”属性。

注意:就我而言,它似乎仅在系统重新启动后才生效。如果它不能立即工作,可以尝试一下!

于 2015-11-10T12:44:50.220 回答
12

'jre choose' 算法在这里定义,即它尝试以下操作:

  1. 'gradle.java.home' 系统属性中引用的 Java 位置(如果有);
  2. 'JAVA_HOME' 环境变量;
  3. 项目jdk;
  4. ide配置的任何jdk;

我怀疑你有“gradle.java.home”,它指向 $IDEA_HOME/bin/idea.properties 中的 java 1.7

于 2013-03-25T15:59:04.980 回答
8

尽管丹尼斯的回答帮助我进一步调查,但起初并不成功。

我有 99 个问题,但 gradle 不是一个

我的第一个发现是,实际上问题不是 gradle,而是整个 IDE 都在使用 Java 7,尽管我的设置另有说明。

我有几个问题要解决:

  1. Java 7 安装了一个 java.exe 的副本,该副本C:\Windows\System32\早于%PATH%同样的设置%JAVA_HOME%/bin%

    => 删除副本导致%JAVA_HOME%/bin/java.exe正确拾取所需的副本

  2. 下一个问题是通过idea64.exe仍然使用 JDK7 启动 IntelliJ,我找不到改变它的方法

    =>测试中的专业提示:IDEA Plugin SystemProperties显示 IDE 当前使用的所有 JAVA-Props =>idea.bat改为使用可配置的方式

  3. idea.bat仍然拒绝使用 JDK 中的设置,%JAVA_HOME%而是使用捆绑的 JRE ( %IDEA_HOME%/jre)

    => 检查 bat 文件的内容导致我找到解决方案来定义%IDEA_JDK%指向%JAVA_HOME%哪个确实是 bat 在诉诸捆绑的 JRE 之前检查的唯一变量

最后的想法

关于设置正确的 JDK/JRE 以启动 IntelliJ 存在一些奇怪的问题,但它完全可行,无需更改任何属性文件或启动文件,因此可以安全升级。

奖金提示

如果您使用的是 Windows 并且需要更好的方法来跟踪系统属性,我建议您使用RapidEE。它的 GUI 比自 Windows 95 以来没有改变的丑陋的 Windows UI 要好得多。

于 2013-03-26T11:29:49.967 回答
1

我的问题是:我想运行 1.8,但它运行的是 1.6。

当我在 IntelliJ 想法中运行“gradle run”时,我可以看到输出:

10:50:35: Executing external task 'run'... :compileJava :processResources UP-TO-DATE :classes Exception in thread "main" java.lang.NoClassDefFoundError: org/raig Caused by: java.lang.ClassNotFoundException: org.raig     at java.net.URLClassLoader$1.run(URLClassLoader.java:202)   at java.security.AccessController.doPrivileged(Native Method)   at java.net.URLClassLoader.findClass(URLClassLoader.java:190)   at java.lang.ClassLoader.loadClass(ClassLoader.java:306)    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) :run FAILED

FAILURE: Build failed with an exception.

* What went wrong: Execution failed for task ':run'.
> Process 'command '/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1

我修改了/Applications/IntelliJ IDEA 14 CE.app/Contents/Info.plist

<key>JVMOptions</key>
    <dict>
      <key>ClassPath</key>
      <string>$APP_PACKAGE/Contents/lib/bootstrap.jar:$APP_PACKAGE/Contents/lib/extensions.jar:$APP_PACKAGE/Contents/lib/util.jar:$APP_PACKAGE/Contents/lib/jdom.jar:$APP_PACKAGE/Contents/lib/log4j.jar:$APP_PACKAGE/Contents/lib/trove4j.jar:$APP_PACKAGE/Contents/lib/jna.jar</string>

      <key>JVMVersion</key>
      <string>1.6*,1.7+</string>

我在 JVMVersion 键中添加了“1.8*”。

<key>JVMVersion</key>
      <string>1.8*,1.6*,1.7+</string>

我重新启动了 IntelliJ,运行了任务,我得到了:

Execution failed for task ':run'.
> Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
于 2015-08-07T08:59:28.653 回答
0

只是为了扩展来自 denis.zhdanov 的响应:由于 Intellij 在 Mac OS X 中通过“图标单击”调用它时没有从 bash 中获取系统/env 变量的古老问题 - 你将不得不罚款 Info .plist 并将属性添加到文件中以使其工作。例如:

在您的系统上,找到: /Applications/IntelliJ IDEA 12.app/Contents/Info.plist

编辑文件以在 Properties 部分中添加值:

<dict> <key>gradle.java.home</key> <string>/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home</string> </dict>

路径是您的 JVM 的 $JAVA_HOME。

于 2015-03-24T20:18:45.430 回答
0

只需将项目中的 gradle 属性文件更改为包括:

org.gradle.java.home = /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home

或您需要的任何 JDK。我一直在寻找一个像弱者一样的答案,它把我逼疯了。

于 2016-03-01T17:14:20.373 回答