您的位置:首页 > 编程语言 > Java开发

Mac OS 上设置 JAVA_HOME

2014-05-04 20:49 411 查看


Mac OS 上设置 JAVA_HOME   

由于需要,前几天在 OS X 上安装了 Oracle 的 Java 7。安装之后,发现由于我原来设置的 JAVA_HOME 为 /Library/Java/Home ,导致我使用的还是原来苹果提供的
Java 6 而不是刚安装的 Java 7。

网上查了一下,发现网上普遍存在一种不太好的硬编码方式,比如以下这些:

JAVA_HOME=/Library/Java/HomeJAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/HomeJAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home//上面的几个目录其实是等价的链接关系,都指向的是苹果提供的 Java 6
/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 目录。

最佳方式是:

export JAVA_HOME=`/usr/libexec/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:安装,删除,还原,配置,系统请求

网上查了一下,发现网上普遍存在一种不太好的硬编码方式,比如以下这些:

JAVA_HOME=/Library/Java/HomeJAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/HomeJAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home//上面的几个目录其实是等价的链接关系,都指向的是苹果提供的 Java 6
/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 目录。

最佳方式是:

export JAVA_HOME=`/usr/libexec/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:安装,删除,还原,配置,系统请求
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mac jdk