gpt4 book ai didi

java - 获取Gradle守护程序以在特定的Java版本上运行

转载 作者:行者123 更新时间:2023-12-03 05:37:15 26 4
gpt4 key购买 nike

它在Windows 10操作系统上的Cygwin BASH中运行Gradle 5.2.1。

关于让Gradle使用某个JDK和JRE,有一些答案。我的系统使用的是Java 9(在某种意义上,JAVA_HOME指向其JDK,路径的第一个条目指向其\ bin目录)...但是对于使用TestFX的特定项目,我必须使用Java 8。

我花了数小时试图使事情正常进行,但我总是遇到这个问题。输出:

$ ./gradlew build -Dorg.gradle.java.home=D:/apps/Java/jdk1.8.0_191
Starting a Gradle Daemon, 20 busy and 2 incompatible Daemons could not be reused, use --status for details

FAILURE: Build failed with an exception.

  • What went wrong: The newly created daemon process has a different context than expected. It won't be possible to reconnect to this daemon. Context mismatch: Java home is different.
    Wanted: 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=null,priority=NORMAL,daemonOpts=-XX:MaxMetaspaceSize=256m,-XX:+HeapDumpOnOutOfMemoryError,-Xmx512m,-Dfile.encoding=windows-1252,-Duser.country=GB,-Duser.language=en,-Duser.variant]
    Actual: 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\daemon,pid=10500,idleTimeout=10800000,priority=NORMAL,daemonOpts=-XX:MaxMetaspaceSize=256m,-XX:+HeapDumpOnOutOfMemoryError,-Xmx512m,-Dfile.encoding=windows-1252,-Duser.country=GB,-Duser.language=en,-Duser.variant]


让我感到困惑的是“Actual”守护程序的这一位:“javaHome = D:\ apps \ Java \ jre1.8.0_201”。

确实在该位置有一个JRE ...但是我的系统中没有任何人说或说它是“java home” /“java.home” / JAVA_HOME或实际上是javaHome。

顺便说一句,我将ECHO语句放在gradlew中来告诉我将使用哪个JAVA_HOME和JAVACMD。这些实际上显示了Java 9路径,这就是配置我的系统的方式。但是很明显,使用Java 8的指令确实可以工作(如果我将其放在gradle.properties中也可以正常工作),因为最终旋转的守护进程显然是在Java 8上运行的。但是为什么找到这个JRE是为什么呢?路径...然后将其命名为“javaHome” /“java.home” /“JAVA_HOME”?

最佳答案

我认为这是一种解决方法,因为我真的不了解这里的机制。

我去Oracle并下载了JDK 8u191安装.exe,并安装在我的系统上。此过程的一部分涉及“组件注册”和其他内容……足以说明,到此结束,守护程序不兼容问题似乎已经消失了。

在W10控制面板中查看我的“Java”图标(“Java控制面板”?)时,我发现什么都没有改变:在“用户”选项卡中有3个Java版本:11.0.2、1.8.0_201(未选中“启用”)和1.8.0_191。在系统选项卡中只有一个:1.8.0_201(未选中已启用)。

守护程序似乎是由1.8.0_191创建的,它可以工作,因为它与./gradlew build指令中的Java版本相同。不过,您仍然想知道这一切是如何工作的:配置Java 8似乎促使Gradle继续寻找一些看起来“大约适合Java 8 JDK”的位置。

关于java - 获取Gradle守护程序以在特定的Java版本上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55232753/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com