Как сообщить IntelliJ о запуске gradle с помощью Java 1.6 JDK?
Простой вопрос, который я не мог понять даже после нескольких часов попыток и поиска:
У меня установлены как Java 6, так и 7.
Как сообщить IntelliJ о запуске Gradle с помощью JDK версии 1.6?
Независимо от того, что я делаю, 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?
Ответы
Ответ 1
Хотя ответ Дениса помог мне исследовать дальше, он сначала не удался.
У меня 99 проблем, но gradle не один
Моя первая находка заключалась в том, что на самом деле не проблема gradle, но вся среда IDE использует Java 7, несмотря на то, что мои настройки говорят иначе.
У меня было несколько проблем для борьбы:
-
В Java 7 была установлена копия java.exe в C:\Windows\System32\
, которая была ранее выбрана в %PATH%
, чем также установлена %JAVA_HOME%/bin%
= > удаление копий привело к правильному подбору желаемого %JAVA_HOME%/bin/java.exe
-
Следующая проблема заключалась в том, что запуск IntelliJ через idea64.exe
все еще использовался JDK7, и я не мог найти способ изменить этот
= > Pro tip при тестировании: плагин IDEA SystemProperties отображает все JAVA-реквизиты, используемые в настоящее время IDE
= > Используйте idea.bat
вместо этого, чтобы иметь настраиваемый способ
-
idea.bat
все еще отказался использовать JDK, установленный в %JAVA_HOME%
, но вместо этого использовал связанный JRE (%IDEA_HOME%/jre
)
= > Проверка содержимого bat файла приведет меня к решению, чтобы определить %IDEA_JDK%
, указывая на %JAVA_HOME%
, который действительно является единственной переменной, которую проверяет bat, прежде чем прибегать к связанным JRE
Заключительные мысли
Есть несколько странных проблем, связанных с настройкой правильного JDK/JRE для запуска IntelliJ, но он отлично справляется без изменения каких-либо файлов свойств или файлов запуска, что делает его безопасным для обновления.
Бонусный наконечник
Если вы используете Windows и вам нужен лучший способ отслеживать свойства системы, я рекомендовал использовать RapidEE. Этот графический интерфейс лучше, чем уродливый пользовательский интерфейс Windows, который не изменился с Windows 95.
Ответ 2
'jre select' алгоритм определен здесь, а именно: он пытается выполнить следующее:
- Местоположение Java, на которое ссылается системное свойство gradle.java.home '(если есть);
- 'JAVA_HOME' переменная env;
- Проект jdk;
- Любой jdk настроен на ide;
Я подозреваю, что у вас есть gradle.java.home ', который указывает на java 1.7 слева от $IDEA_HOME/bin/idea.properties
Ответ 3
... 2,5 года спустя:
Я использую IntelliJ IDEA 15.0, и у меня была аналогичная проблема:
Эта версия кораблей IDEA в комплекте с JDK 1.8, и я хочу создать и запустить проект Gradle под JDK 1.7
JDK, используемый Gradle, настраивается в настройках (возможно, не раньше):
IDEA > Предпочтения > Сборка, выполнение, развертывание > Инструменты сборки > Gradle
... в разделе "Использовать локальный дистрибутив Gradle" вы должны увидеть свойство "Gradle JVM".
ПРИМЕЧАНИЕ. В моем случае он, по-видимому, вступил в силу после перезагрузки системы. Что-то попробовать, если он не работает сразу!
Ответ 4
Моя проблема: я хочу запустить 1.8, но на нем было 1.6.
Когда я запускаю "gradle run" внутри идеи IntelliJ, я мог видеть результат:
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
Я модифицировал
/Приложения/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>
Я добавил "1.8 *" в ключ JVMVersion.
<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 не подбирает переменные system/env из bash при вызове ее из "щелчка значка" в 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.
Ответ 6
ПРОСТОЕ ИЗМЕНЕНИЕ GRADLE ФАЙЛ СВОЙСТВА В ВАШЕМ ПРОЕКТЕ, ВКЛЮЧАЕМ:
org.gradle.java.home =/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home
или любой другой JDK. Я искал ответ как слабый, это сводило меня с ума.