先看一张图: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/