ОС 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
...