先看一張圖:html
may@MaydeMacBook-Pro /System/Library/Frameworks/JavaVM.framework $ ls -al total 64 drwxr-xr-x 12 root wheel 408 12 3 19:42 . drwxr-xr-x 127 root wheel 4318 11 11 13:08 .. lrwxr-xr-x 1 root wheel 27 11 11 14:27 Classes -> Versions/CurrentJDK/Classes lrwxr-xr-x 1 root wheel 28 11 11 14:27 Commands -> Versions/CurrentJDK/Commands lrwxr-xr-x 1 root wheel 27 11 11 14:27 Frameworks -> Versions/Current/Frameworks lrwxr-xr-x 1 root wheel 24 12 3 18:44 Headers -> Versions/Current/Headers lrwxr-xr-x 1 root wheel 24 11 11 14:27 Home -> Versions/CurrentJDK/Home lrwxr-xr-x 1 root wheel 23 11 11 14:27 JavaVM -> Versions/Current/JavaVM lrwxr-xr-x 1 root wheel 29 11 11 14:27 Libraries -> Versions/CurrentJDK/Libraries lrwxr-xr-x 1 root wheel 26 11 11 14:27 Resources -> Versions/Current/Resources drwxr-xr-x 11 root wheel 374 11 11 14:27 Versions -rw-r--r-- 1 root wheel 104 9 10 07:05 module.map may@MaydeMacBook-Pro /System/Library/Frameworks/JavaVM.framework/Versions $ ls 1.4 1.4.2 1.5 1.5.0 1.6 1.6.0 A Current CurrentJDK may@MaydeMacBook-Pro /System/Library/Frameworks/JavaVM.framework/Versions $ ls 1.4 1.4.2 1.5 1.5.0 1.6 1.6.0 A Current CurrentJDK may@MaydeMacBook-Pro /System/Library/Frameworks/JavaVM.framework/Versions $ ls -al total 64 drwxr-xr-x 11 root wheel 374 11 11 14:27 . drwxr-xr-x 12 root wheel 408 12 3 19:42 .. lrwxr-xr-x 1 root wheel 10 11 11 14:27 1.4 -> CurrentJDK lrwxr-xr-x 1 root wheel 10 11 11 14:27 1.4.2 -> CurrentJDK lrwxr-xr-x 1 root wheel 10 11 11 14:27 1.5 -> CurrentJDK lrwxr-xr-x 1 root wheel 10 11 11 14:27 1.5.0 -> CurrentJDK lrwxr-xr-x 1 root wheel 10 11 11 14:27 1.6 -> CurrentJDK lrwxr-xr-x 1 root wheel 10 11 11 14:27 1.6.0 -> CurrentJDK drwxr-xr-x 8 root wheel 272 12 3 19:42 A lrwxr-xr-x 1 root wheel 1 11 11 14:27 Current -> A lrwxr-xr-x 1 root wheel 59 11 11 14:27 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents may@MaydeMacBook-Pro /Library/Java $ ls -al total 8 drwxrwxr-x 5 root wheel 170 12 19 13:43 . drwxr-xr-x+ 63 root wheel 2142 12 3 19:42 .. drwxrwxr-x 2 root wheel 68 11 11 14:27 Extensions lrwxr-xr-x 1 root wheel 48 11 11 14:27 Home -> /System/Library/Frameworks/JavaVM.framework/Home drwxr-xr-x 3 root wheel 102 12 19 13:43 JavaVirtualMachines
因此,如下廣泛存在的設置方式都只能指向系統默認的jdk home,即蘋果提供的 Java 6:java
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 不在此目錄中。web
由於不一樣的 Java 版本和不一樣的 Java 實現可能安裝在了不一樣的目錄下,因此使用硬編碼的目錄會有以下缺點:shell
安裝或升級新的 Java 後須要從新設置 JAVA_HOME(尤爲是帶版本號的目錄)瀏覽器
沒法適應不一樣的 Java 實現(Apple和Oracle的)oracle
一點歷史:過去 Mac 上的 Java 都是由 Apple 本身提供的,只支持到 Java 6,而且OS X 10.7 開始系統並不自帶(而是可選安裝)。後來 Apple 加入 OpenJDK 繼續支持 Java 6,而 Java 7 將由 Oracle 負責提供。app
根據蘋果的官方說明,Mac OS X 10.5 及之後的版本應該使用/usr/libexec/java_home 命令來肯定 JAVA_HOME ,而在此以前的版本因爲沒有這個命令,則應該使用固定的 /Library/Java/Home 目錄。編碼
最佳方式是:spa
export JAVA_HOME=`/usr/libexec/java_home`
另外,你還能夠這樣用,來選擇不一樣的Java版本:code
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」等,請參考下面這些參考資料:
參考:http://han.guokai.blog.163.com/blog/static/136718271201301183938165/