如何在Linux上自動(dòng)設(shè)置JAVA_HOME環(huán)境變量
問(wèn)題:我需要在我的 Linux 機(jī)器上編譯 Java 程序。為此我已經(jīng)安裝了 JDK (Java Development Kit),而現(xiàn)在我正試圖設(shè)置 JAVA_HOME 環(huán)境變量使其指向安裝好的 JDK 。關(guān)于在 Linux 上設(shè)置 JAVA_HOME 環(huán)境變量,最受推崇的辦法是什么?
許多 Java 程序或基于 Java 的集成開發(fā)環(huán)境 (IDE)都需要設(shè)置好 JAVA_HOME 環(huán)境變量。該變量應(yīng)指向 Java 開發(fā)工具包 (JDK)或Java 運(yùn)行時(shí)環(huán)境 (JRE)的安裝目錄。JDK 不僅包含了 JRE 提供的一切,還帶有用于編譯 Java 程序的額外的二進(jìn)制代碼和庫(kù)文件(例如編譯器,調(diào)試器及 JavaDoc 文檔生成器)。JDK 是用來(lái)構(gòu)建 Java 程序的,如果只是運(yùn)行已經(jīng)構(gòu)建好的 Java 程序,單獨(dú)一份 JRE 就足夠了。
當(dāng)您正試圖設(shè)置 JAVA_HOME 環(huán)境變量時(shí),麻煩的事情在于 JAVA_HOME 變量需要根據(jù)以下幾點(diǎn)而改變:(1) 您是否安裝了 JDK 或 JRE;(2) 您安裝了哪個(gè)版本;(3) 您安裝的是 Oracle JDK 還是 Open JDK。
因此每當(dāng)您的開發(fā)環(huán)境或運(yùn)行時(shí)環(huán)境發(fā)生改變(例如為 JDK 更新版本)時(shí),您需要根據(jù)實(shí)際情況調(diào)整 JAVA_HOME 變量,而這種做法是繁重且缺乏效率的。
以下 export 命令能為您自動(dòng)設(shè)置 JAVA_HOME 環(huán)境變量,而無(wú)須顧及上述的因素。
若您安裝的是 JRE:
- export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))
若您安裝的是 JDK:
- export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))
根據(jù)您的情況,將上述命令中的一條寫入 ~/.bashrc(或 /etc/profile)文件中,它就會(huì)***地設(shè)置好 JAVA_HOME 變量。
注意,由于 java 或 javac 可以建立起多個(gè)層次的符號(hào)鏈接,為此"readlink -f"命令是用來(lái)獲取它們真正的執(zhí)行路徑的。
舉個(gè)例子,假如您安裝的是 Oracle JRE 7,那么上述的***條 export 命令將自動(dòng)設(shè)置 JAVA_HOME 為:
- /usr/lib/jvm/java-7-oracle/jre
若您安裝的是 Open JDK 第8版,那么第二條 export 命令將設(shè)置 JAVA_HOME 為:
- /usr/lib/jvm/java-8-openjdk-amd64
簡(jiǎn)而言之,這些 export 命令會(huì)在您重裝/升級(jí)您的JDK/JRE,或更換默認(rèn) Java 版本時(shí)自動(dòng)更新 JAVA_HOME 變量。您不再需要手動(dòng)調(diào)整它。
via: http://ask.xmodulo.com/set-java_home-environment-variable-linux.html