【问题标题】:How do I tell IntelliJ to start gradle with Java 1.6 JDK?如何告诉 IntelliJ 使用 Java 1.6 JDK 启动 gradle?
【发布时间】:2013-03-25 14:16:15
【问题描述】:

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

我同时安装了 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 的设置?

【问题讨论】:

    标签: java windows intellij-idea gradle


    【解决方案1】:

    ... 2.5 年后:

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

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

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

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

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

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

    【讨论】:

    • 谢谢!这就是为我解决问题的原因。就我而言,我不必重新启动系统或 IntelliJ IDEA(我在 OS X - IDEA 15.0.6 上)
    • 我实际上遇到了相反的问题(Gradle 神秘地试图在 1.7 下运行,但我想要 1.8),这为我解决了这个问题。我自己也不需要重新启动。谢谢!
    【解决方案2】:

    'jre choose'算法定义为here,即尝试如下:

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

    我怀疑你有 'gradle.java.home' 指向 $IDEA_HOME/bin/idea.properties 左侧的 java 1.7

    【讨论】:

    • 感谢您的提示,但正如我在own answer 中所说,问题出在其他地方。
    • 如果我指定一个项目JDK那是因为我想使用它。我为什么要设置它。 JDK 项目绝对应该是默认的。
    【解决方案3】:

    虽然Denis' answer 帮助我进一步调查,但一开始并不成功。

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

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

    我有几个问题要解决:

    1. Java 7 在C:\Windows\System32\ 中安装了一个 java.exe 的副本,该副本在%PATH% 中比同样设置的%JAVA_HOME%/bin% 更早被拾取

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

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

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

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

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

    最后的想法

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

    额外提示

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

    【讨论】:

    • 好的。这个线程提供了更多关于 Windows 规范下 64 位 jre 下的 IJ 的见解 - devnet.jetbrains.com/message/5482146
    • @denis.zhdanov:我刚刚在 MacOS 下尝试了最新的 IntelliJ,从 gradle 工具启动 gradle 任务仍然没有使用项目配置的 SDK。它不应该使用 JAVA_VERSION:在同一个 IntelliJ 中打开的 3 个不同项目只能有一个 JAVA_VERSION,并且都使用不同的 SDK。
    【解决方案4】:

    我的问题是:我想运行 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
    

    【讨论】:

    • 这解决了我的问题,但奇怪的是重新启动我的字体改变了?!
    【解决方案5】:

    只是为了扩展 denis.zhdanov 的响应: 由于 Intellij 在 Mac OS X 中通过“图标单击”调用它时没有从 bash 中获取系统/env 变量的古老问题 - 您必须对 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。

    【讨论】:

      【解决方案6】:

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

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

      或您需要的任何 JDK。我一直在寻找一个像弱者一样的答案,这让我非常疯狂。

      【讨论】:

        猜你喜欢
        • 2017-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-01
        • 1970-01-01
        相关资源
        最近更新 更多