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

han*_*oir 2 java spring gradle git-bash

我试图同时./gradlew bootRunGit BashPowerShell中运行,并收到此错误: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 
Run Code Online (Sandbox Code Playgroud)

我还尝试运行Eclipse EE,这没有问题。环境设置应该没有问题。

小智 8

请将 JAVA_HOME 变量位置设置为 JDK 而不是 JRE 的路径。

如果设置正确,请在编辑模式下检查环境变量。就我而言,我发现 JAVA_HOME 环境变量末尾附加了一个分号。

去检查:

  1. 打开环境变量列表。
  2. 选择变量并单击编辑。
  3. 删除分号并保存。

关闭设置并使用echo %JAVA_HOME%检查 cmd 中的路径,然后运行​​gradle -v

它运行得很完美。

笔记:通过单击“编辑”按钮检查变量值,因为我们看不到分号。Windows 添加了分号,以便同一个变量可以用作多个位置的路径。

添加图片供参考: 编辑模式下的环境变量


Mik*_*elT 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.
Run Code Online (Sandbox Code Playgroud)

将此行添加到错误消息中: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.
Run Code Online (Sandbox Code Playgroud)

然后运行 ​​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 不将变量名称连接到路径中。


ern*_*t_k 6

看起来您的 JAVA_HOME 变量解析为 JRE 安装目录。但是当您谈论 Gradle 时,您肯定是在尝试构建/编译代码。

如果您安装了 JDK,请将 JAVA_HOME 变量更改为指向它。文件夹名称通常应以“jdk”开头。否则,您必须安装 Java 开发工具包。

您也可以尝试在命令行 ( SET JAVA_HOME=<path to the jdk directory>)上运行 gradle 之前手动导出变量


小智 6

除了Ernest的答案外,它想要的JAVA_HOME是实际目录,而不是bin文件夹(如javac所需的路径)。花了我一段时间来解决

  • 这就是为我解决的问题。我没有意识到这一点。 (3认同)