Подтвердить что ты не робот

Как сообщить 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?

4b9b3361

Ответ 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. Я искал ответ как слабый, это сводило меня с ума.