Mac OS 上設置 JAVA_HOME

先看一張圖: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/

相關文章
相關標籤/搜索