簡體   English   中英

為什么 maven 會忽略我安裝的 JDK?

[英]Why does maven ignores the JDK i installed?

當我對 Maven (使用mvn命令)執行任何操作時,我收到以下消息:

JAVA_HOME 環境變量未正確定義 運行此程序需要此環境變量 注意:JAVA_HOME 應指向 JDK 而不是 JRE

java -version

返回以下內容:

openjdk 版本 "1.8.0_212-1-ojdkbuild" OpenJDK 運行時環境 (build 1.8.0_212-1-ojdkbuild-b04) OpenJDK 64-Bit Server VM (build 25.212-b04, 混合模式)

我的 JAVA_HOME 指向這個 JDK 的 bin 文件夾。 我的 PATH 變量中也有相同的 bin 文件夾。

我的問題是我做錯了什么? java -version不應該說開發工具包而不是運行時環境嗎?

我不認為我們會通過問你問題來解決問題。 相反,我建議您執行以下操作:

  1. 在命令提示符處,將環境變量%MAVEN_BATCH_ECHO%設置為on的值。 然后在同一命令提示符下,運行mvn 這應該回顯mvn.cmd批處理文件運行的所有命令。

  2. 將 output 與系統上安裝的批處理文件的源進行比較。 特別是,查看這些行的回顯:

     @REM ==== START VALIDATION ==== if not "%JAVA_HOME%"=="" goto OkJHome for %%i in (java.exe) do set "JAVACMD=%%~$PATH:i" goto checkJCmd:OkJHome set "JAVACMD=%JAVA_HOME%\bin\java.exe":checkJCmd if exist "%JAVACMD%" goto chkMHome echo The JAVA_HOME environment variable is not defined correctly >&2 echo This environment variable is needed to run this program >&2 echo NB: JAVA_HOME should point to a JDK not a JRE >&2 goto error

    (請注意,上面的摘錄取自最新版本的 Maven 批處理文件。您可能有舊版本的 Maven 做一些不同的事情。在下結論之前檢查它。)

  3. 如果這不起作用,請修改批處理文件並添加一行來回顯 % echo %JAVA_CMD%設置的內容。 然后運行修改后的批處理文件。

請注意,驗證實際上是檢查%JAVA_CMD%是否作為文件存在。


我看到你實際上已經通過重新安裝解決了這個問題。 不幸的是,這並不能告訴我們真正的問題是什么。

JAVA_HOME應該是bin文件夾所在的文件夾,但是我認為你已經安裝了java,沒有jdk,運行javac -version你會看到編譯器是否可用。

可能您應該安裝 package openjdk-8-jdk ,但您只有openjdk-8-jre 那是 ubuntu package 名稱。 名稱可能因您的操作系統而異。

看來您已經在C:\Program Files\...下安裝了 JDK,因此您需要將絕對路徑放在JAVA_HOMEPATH環境變量中,即不要在PATH中設置%JAVA_HOME%\bin 而是在PATH環境變量中設置C:\Program Files\...\bin

此外,請確保JAVA_HOME中設置的路徑比PATH變量中設置的路徑高一級。

最后但並非最不重要的一點是,確保將此 JDK 的路徑移動到PATH下的所有值之上,這將確保另一個 JDK 的路徑不會優先於您要使用的 JDK。

卸載所有內容並清除目錄並重新啟動計算機后。 我重新安裝了所有東西。 在系統變量中,PATH 設置為 java 路徑 + /bin,在 JAVA_HOME 上它只是文件夾的路徑。 MAven 再次運行

暫無
暫無

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

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