我需要在 Linux 機器上編譯 Java 程式,為此我已經安裝了 JDK (Java Development Kit),而現在我正試圖設定 JAVA_HOME 環境變數使其指向安裝好的 JDK 。關於在 Linux 上設定 JAVA_HOME 環境變數,最受推崇的辦法是什嗎?
許多 Java 程式或基於 Java 的整合式開發環境 (IDE)都需要設定好 JAVA_HOME 環境變數。該變數應指向 Java 開發套件 (JDK)或 Java 運行時環境 (JRE)的安裝目錄。JDK 不僅包含了 JRE 提供的一切,還帶有用於編譯 Java 程式的額外的二進位代碼和庫檔案(例如編譯器,調試器及 JavaDoc 文檔產生器)。JDK 是用來構建 Java 程式的,如果只是運行已經構建好的 Java 程式,單獨一份 JRE 就足夠了。
當您正試圖設定 JAVA_HOME 環境變數時,麻煩的事情在於 JAVA_HOME 變數需要根據以下幾點而改變:(1) 您是否安裝了 JDK 或 JRE;(2) 您安裝了哪個版本;(3) 您安裝的是 Oracle JDK 還是 Open JDK。
因此每當您的開發環境或運行時環境發生改變(例如為 JDK 更新版本)時,您需要根據實際情況調整 JAVA_HOME 變數,而這種做法是繁重且缺乏效率的。
以下 export 命令能為您自動化佈建 JAVA_HOME 環境變數,而無須顧及上述的因素。
若您安裝的是 JRE:
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))
若您安裝的是 JDK:
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))
根據您的情況,將上述命令中的一條寫入 ~/.bashrc(或 /etc/profile)檔案中,它就會永久地設定好 JAVA_HOME 變數。
注意,由於 java 或 javac 可以建立起多個層次的符號連結,為此"readlink -f"命令是用來擷取它們真正的執行路徑的。
舉個例子,假如您安裝的是 Oracle JRE 7,那麼上述的第一條 export 命令將自動化佈建 JAVA_HOME 為:
/usr/lib/jvm/java-7-oracle/jre
若您安裝的是 Open JDK 第8版,那麼第二條 export 命令將設定 JAVA_HOME 為:
/usr/lib/jvm/java-8-openjdk-amd64
簡而言之,這些 export 命令會在您重裝/升級您的JDK/JRE,或更換預設 Java 版本時自動更新 JAVA_HOME 變數。您不再需要手動調整它。
Linux下修改/設定環境變數JAVA_HOME 步驟
1. 永久修改,對所有使用者有效
# vi /etc/profile
//按鍵盤[Shift + g], 在profile檔案最後添加下面的內容:
export JAVA_HOME = /home/myuser/jdk1.7.0_03
export PATH = $JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
[注]:修改檔案後如果想馬上生效,還要運行 #source /etc/profile
2. 永久修改,對單一使用者有效
//修改使用者目錄下的.bash_profile檔案
$ vi /home/myuser/.bash_profile
//在檔案最後添加下面的內容
export JAVA_HOME = /home/myuser/jdk1.7.0_03
export PATH = $JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
[注]:修改檔案後如果想馬上生效,還要運行 #source /home/myuser/.bash_profile
3. 只對當前bash /shell 生效
$ export JAVA_HOME = /home/myuser/jdk1.7.0_03
$ export PATH = $JAVA_HOME/bin:$PATH
$ export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar