Ubuntu 22.04.1,從 20.04.5 新更新。
當我嘗試使用 Maven 構建任何東西時,它會抱怨:
$ mvn -v
The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE
不過,我可以使用 sudo 獲得結果:
$ sudo mvn -v
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 17.0.4, vendor: Private Build, runtime: /usr/lib/jvm/java-17-openjdk-amd64
Default locale: en_GB, platform encoding: UTF-8
OS name: "linux", version: "5.15.0-48-generic", arch: "amd64", family: "unix"
在更新到 Ubuntu 22.04 之前,我可以在上周構建良好;但是,在嘗試構建一個新專案時,我的老板說我需要使用 sudo 來構建它,所以我做到了。由于 Java 版本而失敗(Maven 堅持嘗試使用 Java 8),無論我做什么,它都不會更改為使用 17。直到我完全洗掉了 Java 8,此時我開始遇到JAVA_HOME is not defined correctly問題。
我已經嘗試卸載所有 Java 版本以及 Maven 并重新安裝。我的 PATH 和 JAVA_HOME 變數似乎確實回傳正確:
$ echo $JAVA_HOME
/usr/lib/jvm/java-17-openjdk-amd64
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin:/home/naf/.local/share/JetBrains/Toolbox/scripts:/usr/lib/jvm/java-17-openjdk-amd64/bin
我不想通過構建為 sudo 來搞亂專案,但我不知道該去哪里。
uj5u.com熱心網友回復:
JAVA_HOME 可能是在你自己的組態檔中設定的,然后被 maven 測驗和不喜歡。
當切換到 root 時,maven 不會進行測驗,并且可以繼續在路徑中尋找 java。
試運行
unset JAVA_HOME; mvn …
和你一樣。
uj5u.com熱心網友回復:
要正確安裝Java Development Kit (JDK),最好通過系統包管理器安裝它,并使用系統工具配置活動版本。在 Ubuntu 中,JDK 包的名稱如下:openjdk-xx-jdk,其中 xx 是版本號。此命令為您提供所有可用版本:
apt-cache search openjdk | grep -E ^openjdk-[0-9]*-jdk
可以同時安裝多個版本,使用apt工具即可。
要檢查安裝的版本:
sudo update-java-alternatives --list
設定激活一個:
sudo update-java-alternatives --set <tag_in_first_column_of_the_list>
如果您正確執行此操作,您將不再有此問題。
注意JRE和JDK的區別。當您使用 Java(Maven 使用)編程時,您必須使用包含javac編譯器的 JDK,而不是不包含它的 JRE。
JAVA_HOME 可以指向兩者,因此會出現這種問題。
要檢查 JAVA_HOME 是否指向 JRE 或 JDK,請執行:
$JAVA_HOME/bin/javac -version
如果它指向一個 JRE(在我們的例子中是一個錯誤),那么回應將是:
bash: /bin/javac: No such file or directory
另外,在 Ubuntu 系統上:
JRE 包的名稱如下:openjdk-xx-jre,不要出于
編譯目的安裝它,而是安裝 JDK,它也包含 JRE。JAVA_HOME 根本沒有初始化,如果您的環境安裝正確,Maven 會動態初始化它。
uj5u.com熱心網友回復:
Maven 有一個~/.mavenrc檔案,其自己的JAVA_HOME定義指向 Java 8。似乎會覆寫系統默認值。我想在使用 sudo 時它會忽略我的主目錄中的檔案并獲取系統默認值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/514514.html
標籤:爪哇行家须藤java 主页
