gpt4 book ai didi

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

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

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

我已经为此苦苦挣扎了几个小时。关于 SO 的一两个问题似乎与此相关,但我距离理解基 native 制以及如何让 Gradle 使用正确的 JDK/JRE 仍有很长的路要走。

当 gradle build 无法正常工作并提示找不到“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 版本,证明操作系统系统已按预期配置。

但 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'

因此,据我推测,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?肯定有办法让它使用另一个?

稍后

我还尝试添加一些 ECHOgradle 的声明启动脚本...其中有一个专门用于确定要使用的 JVM 的部分。这些实验清楚地表明该脚本正确地使用了所需的 JDK(在 D: 下)。这也不是 Cygwin 相关的问题,因为当 Java\重命名为 Java_XXX 时,其他 Cygwin 命令可以正常工作。我还检查了注册表:没有发现任何线索。
通过在 Cygwin 命令提示符下进入“gradle”,工作中的某处坚持使用烘焙的 JRE 位置,甚至在 gradle 之前。启动脚本正在运行...

最佳答案

我可以通过升级系统的 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 出现了各种有趣的后果:可怕的红色感叹号……这是由于在几个项目的“项目和外部依赖项”下,依赖项显示它们位于旧的 3.5 GRADLE_USER_HOME 中。位置,我故意重命名以使其无法访问。我发现无法在 Eclipse 中“重建”这些依赖项(即强制使用 GRADLE_USER_HOME,现在指向 ...5.2.1 下的位置),而是选择重新创建 Eclipse 项目。

很努力。当然必须有更好的方法。

顺便说一句,当您在 Cygwin 中运行 Gradle 命令时,在“Java 控制面板”中为您的操作系统配置的 JVM 确实会在 gradle 之前被调用。启动脚本运行(......我认为)。即使您的JAVA_HOME设置和第一个 PATH entry 指向不同的 JRE(它们可能不应该是)。

关于java - Java JRE/JDK 和 JAVA_HOME 或 java.home 的 Gradle 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55152421/

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