专栏首页码客Mac OS 上设置 JAVA_HOME

Mac OS 上设置 JAVA_HOME

设置JAVA_HOME

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

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

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 不在此目录中。

因为不同的 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`;
或者
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`;
或者
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`;

查询设置的JAVA_HOME

echo $JAVA_HOME

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 第31次文章:手写SORM框架(一)

    在上周的末尾,我们介绍了ORM框架,将数据库和Java程序中的数据类型进行关联。这周我们进入SORM框架深入探究,最后手写一个SORM框架。作者也是第一次学习,...

    鹏-程-万-里
  • 第32次文章:手写SORM框架(二)

    在上周,我们将整个SORM的框架结构梳理了一下,本周开始对整个框架的每个细节步骤进行相关的填充。目前还没有把整个框架全部搭建起来,只完成了一小部分,这周我们就对...

    鹏-程-万-里
  • python2与python3 版本区别

    郭大侠
  • JSON金额解析BUG的解决过程

    这是在我们开发的一个支付系统中暴露的一个BUG,问题本身比较简单,有意思的是解决问题的过程。将过程分享出来,希望能够对大家有所帮助。

    程序猿讲故事
  • 第33次文章:SORM框架(三)

    本周将SORM框架的基本功能已经全部填充起来了,形成了SORM框架的1.0版本,有兴趣的同学可以通过下面的链接获取源码哟!下周将进入SORM框架的升级阶段,在现...

    鹏-程-万-里
  • len(x) 击败 x.len(),从内置函数看 Python 的设计思想

    除了纯粹的数学和魔术,程序员也是本公众号服务的群体之一,他们大量的需要来自数学理性和魔幻艺术的滋养才能创作出更好的程序艺术品。本文以python中对象方法还是通...

    magic2728
  • 第30次文章:文本大对象+ORM

    本周主要介绍JDBC中的两个文本大对象CLOB和BLOB,并根据前面在JDBC中编程的分析,封装了一个连接数据库和关闭流操作的工具类JDBCUtil。最后涉及了...

    鹏-程-万-里
  • 计算机基础知识

    计算机基本的硬件由:CPU / 内存 / 主板 / 硬盘 / 网卡 / 显卡 等组成,只有硬件但硬件之间无法进行交流和通信。

    郭大侠
  • Linux(常用)命令

    jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令, 简...

    郭大侠
  • Springboot输出PDF文件

    有个人(死需求)跑过来跟你说,这些都给我输出成报告,pdf格式的,所以就有了下面这个,做一下笔记,以后有用直接过来拿。在网上找了一下,发现大家都是在用itext...

    用户3467126

扫码关注云+社区

领取腾讯云代金券