Это Gradle 5.2.1 в Cygwin BASH на ОС Windows 10.
Есть несколько ответов о том, как заставить Gradle использовать определенные JDK и JRE.Моя система использует Java 9 (в том смысле, что JAVA_HOME указывает на его JDK и первую запись для PATH в его каталог \ bin) ... но для конкретного проекта, использующего TestFX, я должен использовать Java 8.
Я часами пытался заставить вещи работать, но я всегда сталкиваюсь с этой проблемой.Вывод:
$ ./gradlew build -Dorg.gradle.java.home = D: /apps/Java/jdk1.8.0_191
Запуск демона Gradle, 20 занятых и 2 несовместимых демонане может быть повторно использован, используйте --status для подробностей
FAILURE: сборка не удалась с исключением.
- Что пошло не так: недавно созданный процесс демона имеет контекст, отличный от ожидаемого.Невозможно восстановить связь с этим демоном.Несоответствие контекста: дом Java отличается.
Требуются: DefaultDaemonContext [uid = null, javaHome = D: \ apps \ Java \ jdk1.8.0_191, daemonRegistryDir = D: \ apps \ gradle \ gradle-5.2.1 \ gradle_user_home \ daemon, pid = 8736, idleTimeout =нуль, приоритет = NORMAL, daemonOpts = -XX: MaxMetaspaceSize = 256m, -XX: + HeapDumpOnOutOfMemoryError, -Xmx512m, -Dfile.encoding = окна-1252, -Duser.country = GB, -Duser.language = еп, -Duser.вариант]
Факт: DefaultDaemonContext [uid = 12195e35-1c39-45d6-8abe-bdeebeea4d37, javaHome = D: \ apps \ Java \ jre1.8.0_201, daemonRegistryDir = D: \ apps \ gradle \ gradle-5.2.1 \gradle_user_home \ демон, PID = 10500, idleTimeout = 10800000, приоритет = NORMAL, daemonOpts = -XX: MaxMetaspaceSize = 256m, -XX: + HeapDumpOnOutOfMemoryError, -Xmx512m, -Dfile.encoding = окна-1252, -Duser.country = GB,-Duser.language = en, -Duser.variant]
То, что меня сбивает с толку, так это бит для демона "Actual": "javaHome = D: \ apps \ Java \"jre1.8.0_201 ".
В этом месте действительно есть JRE ... но ни в одной точке моей системы я не говорю, или кто-то говорит, что это" дом Java "/ "java.home" / JAVA_HOME или действительно, как здесь напечатано, javaHome.
Между прочим, я поместил операторы ECHO в gradlew, чтобы сообщить мне, какие JAVA_HOME и JAVACMD будут использоваться.На самом деле они показывают пути Java 9, как моя система настроена.Однако ясно, что директива для использования Java 8 работает (работает одинаково, если я помещу это в gradle.properties), поскольку демон, который в конечном итоге запускается, явно работает на Java 8. Но ПОЧЕМУ или КАК он находит эту JRE?путь ... и затем называя его "javaHome" / "java.home" / "JAVA_HOME"?