Java JRE / JDK和JAVA_HOME或java.home的问题

时间:2019-03-13 22:59:55

标签: java gradle java-home

Windows 10操作系统。我正在使用Cygwin BASH控制台运行Gradle。

我已经为此努力了几个小时。关于SO,有一个或两个问题似乎与此相关,但是距离了解基本机制以及如何使Gradle使用正确的JDK / JRE还有很长的路要走。

这是在gradle构建无法正常工作并抱怨找不到“ tools.jar”时开始的。这似乎表明用于运行Gradle应用程序的Java JRE的路径未与JDK关联。确实是这样:它坚持使用的JRE位于“ C:\ Program Files \ Java \ jre1.8.0_73 \”。这是一个没有JDK的JRE。

我要Gradle使用的JDK在“ D:\ apps \ Java \ jdk1.8.0_191 \”处。

我已将JAVA_HOME设置为此值。我还在PATH环境变量的开头放置了“ D:\ apps \ Java \ jdk1.8.0_191 \ bin \”。

在Cygwin和W10控制台中,当我转到“ java -version”时,它都会打印出1.8.0_191版本,证明OS系统已按预期配置。

但是Gradle本身坚持在C:中使用JRE。
我尝试了无数次实验,然后重启了无数次。 当我去的时候,在build.gradle中:

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

...它总是打印出C:\位置版本(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'

据我所知,使用特定的JRE位置似乎使Gradle内的东西变得固执起来……而忽略了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 \”时,返回“无法打开”错误。换句话说,即使您可以在Gradle中配置java.home,Gradle本身也似乎依赖于您不希望使用的Java版本,而不是为其配置操作系统的版本。 !

Gradle应用程序究竟如何找到将用于开展业务的JRE?当然,必须有一种方法可以使其使用另一种方法?

以后

我还尝试向ECHO启动脚本中添加一些gradle语句...其中有一个特定的部分专门用于确定要使用的JVM。这些实验清楚地表明该脚本正确地使用了所需的JDK(在D:下)。它也不是与Cygwin有关的问题,因为当Java \重命名为Java_XXX时,其他Cygwin命令也可以正常工作。我还检查了注册表:未找到任何线索。 通过在Cygwin命令提示符下进行“渐变”,即使在运行gradle启动脚本之前,工作中某些地方仍坚持使用内置的JRE位置...

1 个答案:

答案 0 :(得分:0)

我能够通过升级系统的Java和Gradle来解决此问题。我更改为Java 9(尽管显然在撰写本文时我们使用的是Java 11)。我还更改了Gradle 5.2.1(从3.5)。我想我得出的结论是Gradle 3.5与Java 9不兼容...

我很困惑:有一段时间,看来Cygwin已经过时了,我需要更新版本的 Gradle。但是实际上Cygwin从W10继承了PATH,其中PATH项之一是“%GRADLE_HOME%\ bin”。 Cygwin正在使用W10 Gradle。使用Windoze操作系统有什么乐趣!

GRADLE_HOME(不同于GRADLE_USER_HOME,下载了依赖项!)因此必须更改为新版本的Gradle的位置。

对Eclipse产生了各种有趣的后果:可怕的红色感叹号...是由于以下事实导致的:在多个项目的“项目和外部依赖项”下,依赖项显示自己位于旧的3.5 {{1}中}位置,我特意将其重命名以使其无法访问。我发现没有办法在Eclipse中“重建”这些依赖项(即强制使用GRADLE_USER_HOME,现在指向... 5.2.1下的位置),而是选择了重新创建Eclipse项目。

非常尝试。当然必须有更好的方法。

偶然地,确实确实出现了,当您在Cygwin中运行Gradle命令时,在运行GRADLE_USER_HOME启动脚本之前,将调用在“ Java控制面板”中为OS配置的JVM(...认为)。即使您的gradle设置和第一个JAVA_HOME条目指向的是其他JRE(它们可能不应该是)。