Проблемы Gradle с Java JRE / JDK и JAVA_HOME или java.home - PullRequest
0 голосов
/ 14 марта 2019

ОС Windows 10.Я использую консоль Cygwin BASH для запуска Gradle.

Я боролся с этим уже несколько часов.Есть один или два вопроса по SO, которые, кажется, связывают это, но я все еще далек от понимания основных механизмов и того, как заставить Gradle использовать правильный JDK / JRE.

Это началось раньше, когда gradlebuild не работал и жаловался, что не может найти "tools.jar".Похоже, это признак того, что путь к Java JRE, используемый для запуска приложения Gradle, не связан с JDK.Это действительно так: JRE, который он использует для запуска, находится по адресу "C: \ Program Files \ Java \ jre1.8.0_73 \".Это JRE без JDK.

JDK, который я хочу использовать в Gradle, находится по адресу "D: \ apps \ Java \ jdk1.8.0_191 \".

Я установил JAVA_HOME на это значение.Я также поместил «D: \ apps \ Java \ jdk1.8.0_191 \ bin \» в самом начале переменной среды PATH.

В консоли Cygwin и W10, когда я запускаю "java -version", она печатает версию 1.8.0_191, доказывая, что система ОС настроена должным образом.

Но сама Gradleнастаивает на использовании JRE в C:.
Я пробовал многочисленные эксперименты и много раз перезагружался.Когда я заходил в build.gradle:

println "java.home is ${System.properties['java.home']}"

... он всегда распечатывал версию C: \ location (1.8.0_73)

Наконец я сделал это невозможным, переименовав "C: \ Program Files \ Java \ "до" C: \ Program Files \ JavaXXX \ ".Затем это дает:

Chris@M15B /cygdrive/d/My Documents/software projects/EclipseWorkspace/LuceneIndexer_3
$ gradle build Error: could not open `C:\Program Files\Java\jre1.8.0_73\lib\amd64\jvm.cfg'

Так что, насколько я могу предположить, оказалось, что что-то внутри Gradle упрямо настроено на использование определенного местоположения JRE ... которое игнорирует переменную JAVA_HOMEзаписи PATH и собственное понимание ОС того, какой JDK / JRE следует использовать ... и даже устанавливает системную настройку java.home в «ложную» настройку (или такую, которую я не хочу использовать).

Наконец ... Я поместил эту строку в gradle.properties:

org.gradle.java.home=D:\\apps\\Java\\jdk1.8.0_191

Когда я затем изменил "C: \ Program Files \ JavaXXX \" обратно на "C: \ Program Files \ Java\ "наконец-то вещь построена правильно.И наконец java.home был распечатан как "D: \ apps \ Java \ jdk1.8.0_191".Но когда я снова переименовал в «C: \ Program Files \ JavaXXX \», вернулась ошибка «Не удалось открыть».Другими словами, даже если вы можете настроить java.home в Gradle, сам Gradle, похоже, зависит от версии Java, которую вы не хотите использовать, и которая не является версией, для которой настроена ОС!

Как приложение Gradle находит JRE, которое оно собирается использовать для своей деятельности?Конечно, должен быть способ заставить его использовать другой?

позже

Я также попытался добавить некоторые операторы ECHO вgradle сценарий запуска ..., в котором есть специальный раздел, посвященный определению используемой JVM.Эти эксперименты ясно показали, что этот скрипт правильно использует нужный JDK (под D :).Также это не может быть проблемой, связанной с Cygwin, поскольку другие команды Cygwin работают нормально, когда Java \ переименовывается в Java_XXX.Я также проверил реестр: никаких подсказок не найдено.Если перейти в командную строку Cygwin к «gradle», то где-нибудь в работе настаивает на использовании запеченного расположения JRE, даже до запуска сценария запуска gradle ...

1 Ответ

0 голосов
/ 15 марта 2019

Мне удалось решить эту проблему путем обновления Java и Gradle моей системы. Я перешел на Java 9 (хотя, видимо, мы находимся на Java 11 на момент написания статьи). Я также перешел на Gradle 5.2.1 (с 3.5). Думаю, я пришел к выводу, что Gradle 3.5 несовместим с Java 9 ...

Я был в замешательстве: на мгновение показалось, что Cygwin устарел и что мне нужна более новая версия его Gradle. Но на самом деле Cygwin унаследовал PATH от W10, и одна из этих PATH записей была "% GRADLE_HOME% \ bin". Cygwin использовал W10 Gradle. Как весело использовать ОС Windoze!

GRADLE_HOME (отличается от GRADLE_USER_HOME, где загружаются зависимости!), Поэтому пришлось изменить местоположение новой версии Gradle.

Для Eclipse последовали всевозможные забавные последствия: страшные красные восклицательные знаки ... вызванные тем, что в разделе "Project and External Dependencies" для нескольких проектов зависимости обнаружились в старом месте 3.5 GRADLE_USER_HOME. , который я специально переименовал, чтобы сделать его недоступным. Я не нашел способа «перестроить» эти зависимости в Eclipse (то есть принудительно использовать GRADLE_USER_HOME, теперь указывающий на местоположение в ... 5.2.1) и вместо этого решил воссоздать проекты Eclipse.

Довольно стараюсь. Конечно, должен быть лучший путь.

Кстати, действительно, кажется, что когда вы запускаете команду Gradle в Cygwin, JVM, настроенная для вашей ОС в «Панели управления Java», вызывается до запуска сценария запуска gradle (... я думаю) , Даже если ваша настройка JAVA_HOME и первая запись PATH указывают на другую JRE (которой они, вероятно, не должны быть).

...