![](/img/trans.png)
[英]Maven does not recognize the $JAVA_HOME jdk installed on Ubuntu shell
[英]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
不應該說開發工具包而不是運行時環境嗎?
我不認為我們會通過問你問題來解決問題。 相反,我建議您執行以下操作:
在命令提示符處,將環境變量%MAVEN_BATCH_ECHO%
設置為on
的值。 然后在同一命令提示符下,運行mvn
。 這應該回顯mvn.cmd
批處理文件運行的所有命令。
將 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 做一些不同的事情。在下結論之前檢查它。)
如果這不起作用,請修改批處理文件並添加一行來回顯 % 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_HOME
和PATH
環境變量中,即不要在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.