天天看点

Mac OS 上设置 JAVA_HOME

由于需要,前几天在 os x 上安装了 oracle 的 java 7。安装之后,发现由于我原来设置的 java_home 为 /library/java/home ,导致我使用的还是原来苹果提供的 java 6 而不是刚安装的 java 7。

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

/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 目录。

最佳方式是:

另外,你还可以这样用,来选择不同的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:安装,删除,还原,配置,系统请求

继续阅读