如何告诉IntelliJ开始使用Java 1.6 JDK?

时间:2013-03-25 14:16:15

标签: java windows intellij-idea gradle

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

我安装了Java 6和7。

如何告诉IntelliJ使用JDK 1.6版启动Gradle构建?

无论我做什么,IntelliJ都会继续使用

"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?

6 个答案:

答案 0 :(得分:12)

'jre choose'算法定义为here,即尝试以下内容:

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

    我怀疑你有'gradle.java.home',它指向$ 7.1,留在$ IDEA_HOME / bin / idea.properties

答案 1 :(得分:9)

...... 2。5年后:

我使用的是IntelliJ IDEA 15.0,我遇到了类似的问题:

此版本的IDEA附带JDK 1.8,我想在JDK 1.7下构建和运行Gradle项目

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

IDEA>偏好>构建,执行,部署>构建工具>摇篮

..."使用本地gradle分发"你应该看到" Gradle JVM"属性。

注意:在我的情况下,它似乎只在系统重启后生效。如果它不能立即起作用,可以尝试一下!

答案 2 :(得分:8)

虽然Denis' answer帮助我进一步调查,但最初并没有成功。

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

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

我有几个问题需要解决:

  1. Java 7在C:\Windows\System32\中安装了%PATH%中的java.exe副本,该副本先前在%JAVA_HOME%/bin%中被选中,而不是%JAVA_HOME%/bin/java.exe

    =>删除副本导致正确选择所需的idea64.exe

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

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

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

    =>检查bat文件的内容引导我找到定义%JAVA_HOME%的解决方案,指向{{1}},这确实是蝙蝠在诉诸捆绑的JRE之前检查的唯一变量

  4. 最后的想法

    有关设置正确的JDK / JRE以启动IntelliJ的一些奇怪问题,但是在不更改任何属性文件或启动文件的情况下完全可行,因此可以安全升级。

    奖金提示

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

答案 3 :(得分: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

答案 4 :(得分:0)

只是为了扩展denis.zhdanov的回复: 由于从&#34;图标中调用它时,Intellij没有从bash中获取系统/ env变量这个古老的问题,请点击&#34;在Mac OS X中 - 您必须对Info.plist进行优化并将属性添加到文件中才能使其正常工作。例如:

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

编辑文件以在“属性”部分中添加值:

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

路径是JVM的$ JAVA_HOME。

答案 5 :(得分:0)

在您的项目中更改级别属性文件包括:

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

或任何你需要的JDK。我正在寻找一个像弱者一样的答案,这让我绝对疯狂。