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/

相关文章
相关标签/搜索