Windows 10 Gradle: JAVA_HOME被设置为无效目录

12

我尝试在Git BashPowerShell中运行./gradlew bootRun命令,但是遇到了这个错误:ERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\Java\jre1.8.0_121

gradlew文件位于从git克隆的项目目录中。这是一个来自Spring官方指南的练习项目。还有一个名为gradle.bat的文件,其中包含以下内容:

:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%\bin\java.exe 

我也尝试运行Eclipse EE,没有任何问题。环境设置应该没有问题。

我也试着跑了一下Eclipse EE,没什么问题。环境设置应该没问题。


你在那个文件夹里安装了Java吗? - Elliott Frisch
9个回答

25

除了Ernest的回答,JAVA_HOME想要的是实际的目录,而不是像路径需要javac那样的bin文件夹。我花了一段时间才解决了这个问题。


3
这就是解决我的方法。我之前没有意识到这一点。 - TravisChambers

9

看起来你的JAVA_HOME变量指向了一个JRE安装目录。但是因为你在谈论Gradle,所以肯定是在尝试构建/编译代码。

如果你已经安装了JDK,请将JAVA_HOME变量指向它。文件夹名称通常应该以"jdk"开头。否则,你需要安装Java开发工具包。

你也可以在命令行上运行gradle之前手动导出变量 (SET JAVA_HOME=<jdk目录路径>)


8
请将JAVA_HOME变量的位置设置为JDK路径,而不是JRE。如果已经正确设置,请在编辑模式下检查环境变量。在我的情况下,我发现在JAVA_HOME环境变量末尾添加了分号。要检查:
1. 打开环境变量列表。 2. 选择变量并单击“编辑”。 3. 删除分号并保存。
关闭设置后,使用“echo %JAVA_HOME%”命令检查cmd中的路径,并运行“gradle -v”。它可以完美运行。
注意:通过单击“编辑”按钮检查变量值,因为我们无法看到分号。Windows会自动添加分号,以便将同一变量用作多个位置的路径。参考图片如下:Environment variable in Edit mode

7

我在搜索中找到了一个之前没有看到的解决方案。

在某个编辑器中打开您的 gradlew.bat 文件。在第34行左右,您会看到以下内容:

:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%\bin\java.exe

if exist "%JAVA_EXE%" goto init

echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.

将这行添加到错误消息中:echo %JAVA_EXE%

因此它看起来像这样

echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo %JAVA_EXE%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.

然后运行gradlew.bat文件。

现在应该会再次出现错误,但同时会有JAVA_EXE路径的回显。在我的情况下,它正在回显\bin\java.exe而不是完整路径C:\...\Java\jre1.8.0_251\bin\java.exe

为了修复这个问题,我改变了

set JAVA_EXE=%JAVA_HOME%\bin\java.exe

set JAVA_EXE=C:\...\Java\jdk1.8.0_261\bin\java.exe

现在该值已经被硬编码,是的,但它有效。我不知道为什么gradle不将变量名连接到路径中。


4

我发现自己遇到了同样的问题,尽管我的JAVA_HOME设置为正确的JDK路径。 然而Windows 10在路径末尾添加了一个分号。 这样JAVA_HOME变量就可以在任何地方使用,但与Gradle不兼容。 我发布这篇文章,因为它可能会节省其他人的时间;)


0
如果您没有管理员权限,请在用户环境变量中覆盖JAVA_HOME。通过选择Java主目录来避免拼写错误。您必须在bin之前包含文件夹(不要包括/bin)作为Java主目录。

0

如果以上方法都不起作用,打开编辑器并确保 gradle.bat 文件正确,我的情况是 gradle 出了问题。


这并没有真正回答问题。如果您有不同的问题,可以通过点击提问来提出。如果您想在此问题获得新的答案时得到通知,您可以关注此问题。一旦您拥有足够的声望,您还可以添加悬赏以吸引更多关注。- 来自审核 - coturiv

0
Kyrei回答的图示表示为:
[JAVA_HOME variable data (C:\your\java\folder\loc\\)][1]

我还从最后一部分中删除了默认由Windows插入的分号(;)。
附言:由于我的声誉非常低,所以我无法将此图像放在“评论”部分。

0

如果您已经安装了Android Studio

它已经预装了Java。

对于Windows 10/11用户,请访问 选择新的环境变量,并添加以下值/路径:

JAVA_HOME
C:\Program Files\Android\Android Studio\jbr\bin\java

我还建议从https://services.gradle.org/distributions/(具体来说是https://services.gradle.org/distributions/gradle-8.3-all.zip或更近的版本)下载gradle,并将其解压到以下位置:
C:\Users\{your username}\.gradle\wrapper\dists

然后将其添加到您的(系统)路径环境变量中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接