簡體   English   中英

Windows 10 Gradle:JAVA_HOME 設置為無效目錄

[英]Windows 10 Gradle: JAVA_HOME is set to an invalid directory

I was trying to run ./gradlew bootRun in both Git Bash and PowerShell , and got this error: 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 ,沒有問題。 環境設置應該沒問題。

除了歐內斯特的回答,它想要的 JAVA_HOME 是實際目錄,而不是像 javac 路徑想要的 bin 文件夾。 我花了一段時間才解決這個問題

看起來您的 JAVA_HOME 變量解析為 JRE 安裝目錄。 但是當您談論 Gradle 時,您肯定是在嘗試構建/編譯代碼。

如果您安裝了 JDK,請將 JAVA_HOME 變量更改為指向它。 文件夾名稱通常應以“jdk”開頭。 否則,您必須安裝 Java 開發工具包。

您也可以嘗試在命令行上運行 gradle 之前手動導出變量( SET JAVA_HOME=<path to the jdk directory>

請將 JAVA_HOME 變量位置設置為 JDK 而不是 JRE 的路徑。

如果設置正確,請在編輯模式下檢查環境變量。 在我的例子中,我發現在 JAVA_HOME 環境變量末尾附加了一個分號。

去檢查:

  1. 打開環境變量列表。
  2. Select 變量並單擊編輯。
  3. 刪除分號並保存。

關閉設置並使用echo %JAVA_HOME%檢查 cmd 中的路徑,然后運行gradle -v

它運行完美。

注意:通過單擊編輯按鈕檢查變量值,因為我們看不到分號。 Windows 添加了分號,以便可以將同一個變量用作多個位置的路徑。

添加圖片供參考: 編輯模式下的環境變量

我發現自己遇到了同樣的問題,盡管我的 JAVA_HOME 設置為正確的 JDK 路徑。 但是,Windows 10 在路徑末尾附加了一個分號。 這樣 JAVA_HOME 變量可以在任何地方工作,但不適用於 Gradle。 我發布這個,因為它可能會節省我一直在尋找它的時間;)

在我的谷歌搜索中找到了我以前從未見過的解決方案。

在某個編輯器中打開您的 gradlew.bat。 在第 34-ish 行,您將看到:

: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 沒有將變量名連接到路徑中。

如果您沒有管理員權限,請覆蓋用戶環境變量中的 JAVA_HOME。 通過選擇 Java 主文件夾來避免拼寫錯誤。 您必須在 java 主頁的 bin(不包括 /bin)之前包含文件夾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM