Mac OS 上設定 JAVA_HOME
原文連結:http://han.guokai.blog.163.com/blog/static/136718271201301183938165/
由於需要,前幾天在 OS X 上安裝了 Oracle 的 Java 7。安裝之後,發現由於我原來設定的 JAVA_HOME 為 /Library/Java/Home ,導致我使用的還是原來蘋果提供的 Java 6 而不是剛安裝的 Java 7。
網上查了一下,發現網上普遍存在一種不太好的硬編碼方式,比如以下這些:
JAVA_HOME=/Library/Java/Home
JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home
//上面的幾個目錄其實是等價的連結關係,都指向的是蘋果提供的 Java 6
/System/Library/Frameworks/JavaVM.framework/Versions/ 下有多個不同版本的目錄,但它們連結的都是 CurrentJDK 目錄。總之,這些Java都是蘋果提供的Java,Oracle 或 OpenJDK 提供的 Java 不在此目錄中。
因為不同的 Java 版本和不同的 Java 實現可能安裝在了不同的目錄下,所以使用硬編碼的目錄會有如下缺點:
安裝或升級新的 Java 後需要重新設定 JAVA_HOME(尤其是帶版本號的目錄)
無法適應不同的 Java 實現(Apple和Oracle的)
一點歷史
過去 Mac 上的 Java 都是由 Apple 自己提供的,只支援到 Java 6,並且OS X 10.7 開始系統並不自帶(而是可選安裝)。後來 Apple 加入 OpenJDK 繼續支援 Java 6,而 Java 7 將由 Oracle 負責提供。
根據蘋果的官方說明
Mac OS X 10.5 及以後的版本應該使用 /usr/libexec/java_home 命令來確定 JAVA_HOME ,而在此之前的版本由於沒有這個命令,則應該使用固定的 /Library/Java/Home 目錄。
最佳方式是
export JAVA_HOME=`/usr/libexec/java_home`
另外,你還可以這樣用,來選擇不同的Java版本:
export JAVA_HOME=`/usr/libexec/java_home -v 1.6`
or
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
我安裝完 Oracle Java 7後
java_home 命令的各種輸出結果是:
預設或指定1.7的輸出:/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home
/usr/libexec/java_home -v 1.6 的輸出:
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
一些補充說明
Java 7 需要 Mac OS X 10.7.3 (Lion) 及以上版本才能安裝。
在瀏覽器中執行Java要求是64位瀏覽器,所以不支援Chrome, Safari 或 Firefox 沒問題。
更多內容
比如“如何解除安裝”、“解除安裝 Oracle Java 7 後如何還原 Apple Java 6”等,請參考下面這些參考資料: