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

时间:2017-05-20 04:41:02

标签: java spring gradle git-bash

我试图在 Git Bash PowerShell 中运行var demo = [{"accountName":"MTVN\\lalalala", "baseOfficeLocation":"657 Hudson Street Floor 11", "department":"Mp - Engineering - Engineering", "jobTitle":"Sw Test Engineer", "preferredName":"Beddingfield,Natasha", "workEmail":"Natasha.Beddingfield@viacom.com"}] console.log(replaceString(demo[0].jobTitle, 'Sw', 'Software')); // Software Test Engineer function replaceString(str, substr, newSubstr){ var re = new RegExp(substr,"i"); return str.replace(re, newSubstr); } ,并收到此错误:./gradlew bootRun

gradlew 文件位于从git克隆的项目目录中。这是春季官方指南的练习项目。还有一个带有以下行的 gradle.bat 文件:

ERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\Java\jre1.8.0_121

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

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:1)

尽管我的JAVA_HOME设置为正确的JDK路径,但我也遇到了同样的问题。 但是,Windows 10在路径的末尾附加了分号。 这样,JAVA_HOME变量将可以在任何地方使用,但不适用于Gradle。 我发布此邮件是因为它可能会节省我一直在寻找它的时间;)

答案 3 :(得分:1)

找到了一个我在谷歌搜索中从未见过的解决方案。

在某些编辑器中打开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不将变量名连接到路径中。