天天看點

Mac OS 上設定 JAVA_HOME

由于需要,前幾天在 os x 上安裝了 oracle 的 java 7。安裝之後,發現由于我原來設定的 java_home 為 /library/java/home ,導緻我使用的還是原來蘋果提供的 java 6 而不是剛安裝的 java 7。

網上查了一下,發現網上普遍存在一種不太好的寫死方式,比如以下這些:

/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 目錄。

最佳方式是:

另外,你還可以這樣用,來選擇不同的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”等,請參考下面這些參考資料:

蘋果官方說明

java_home 指令手冊

mac os x platform install faq

mac java 7 faq:安裝,删除,還原,配置,系統請求

繼續閱讀