由于需要,前幾天在 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:安裝,删除,還原,配置,系統請求