10.5以后的$JAVA_HOME没有被在.bash_profile中设置的话会被默认设置为 /usr/libexec/java_home。

如果一台mac里面安装了多个JDK, 可以通过/usr/libexec/java_home -V 来查看, 结果如下:

 $ /usr/libexec/java_home -V

 Matching Java Virtual Machines ():

     1.7.0_13, x86_64:"Java SE 7"/Library/Java/JavaVirtualMachines/jdk1..0_13.jdk/Contents/Home

     1.6.0_65-b14-, x86_64:"Java SE 6"/System/Library/Java/JavaVirtualMachines/1.6..jdk/Contents/Home

     1.6.0_65-b14-, i386:"Java SE 6"/System/Library/Java/JavaVirtualMachines/1.6..jdk/Contents/Home

 /Library/Java/JavaVirtualMachines/jdk1..0_13.jdk/Contents/Home

最后一行实际上反映的是系统默认使用的JAVA_HOME路径, 也就是执行/usr/libexec/java_home得到的路径。

如果想使用JDK1.6怎么办?

请在.bash_profile中添加

 JAVA_HOME=$(/usr/libexec/java_home -v 1.6)

 export PATH=$PATH:$JAVA_HOME

 export JAVA_HOME

这样在bash下默认使用的就是JDK 1.6了

 $ java -version

 java version "1.6.0_65"

 Java(TM) SE Runtime Environment (build 1.6.0_65-b14--11M4609)

 Java HotSpot(TM) -Bit Server VM (build 20.65-b04-, mixed mode)

另外要注意的一个地方是, 有些App是直接使用:

 $ pwd
/System/Library/Frameworks/JavaVM.framework/Versions
$ ls -l
total
lrwxr-xr-x root wheel Feb : 1.4 -> CurrentJDK
lrwxr-xr-x root wheel Feb : 1.4. -> CurrentJDK
lrwxr-xr-x root wheel Feb : 1.5 -> CurrentJDK
lrwxr-xr-x root wheel Feb : 1.5. -> CurrentJDK
lrwxr-xr-x root wheel Feb : 1.6 -> CurrentJDK
lrwxr-xr-x root wheel Feb : 1.6. -> CurrentJDK
drwxr-xr-x root wheel Feb : A
lrwxr-xr-x root wheel Feb : Current -> A
lrwxr-xr-x root wheel Feb : CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6..jdk/Contents
$

CurrentJDK来定位JDK路径的。一般如果JDK1.6是后安装的就会看到CurrentJDK为1.6。

要改的话:

 $ ls -l
total
lrwxr-xr-x root wheel Feb : 1.4 -> CurrentJDK
lrwxr-xr-x root wheel Feb : 1.4. -> CurrentJDK
lrwxr-xr-x root wheel Feb : 1.5 -> CurrentJDK
lrwxr-xr-x root wheel Feb : 1.5. -> CurrentJDK
lrwxr-xr-x root wheel Feb : 1.6 -> CurrentJDK
lrwxr-xr-x root wheel Feb : 1.6. -> CurrentJDK
drwxr-xr-x root wheel Feb : A
lrwxr-xr-x root wheel Feb : Current -> A
lrwxr-xr-x root wheel Feb : CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6..jdk/Contents
$ sudo rm CurrentJDK
Password:
$ ln -s /Library/Java/
ln: ./: File exists
$ ls -l
total
lrwxr-xr-x root wheel Feb : 1.4 -> CurrentJDK
lrwxr-xr-x root wheel Feb : 1.4. -> CurrentJDK
lrwxr-xr-x root wheel Feb : 1.5 -> CurrentJDK
lrwxr-xr-x root wheel Feb : 1.5. -> CurrentJDK
lrwxr-xr-x root wheel Feb : 1.6 -> CurrentJDK
lrwxr-xr-x root wheel Feb : 1.6. -> CurrentJDK
drwxr-xr-x root wheel Feb : A
lrwxr-xr-x root wheel Feb : Current -> A
$ ln -s /Library/Java/JavaVirtualMachines/jdk1..0_13.jdk/Contents CurrentJDK
$ ls -l
total
lrwxr-xr-x root wheel Feb : 1.4 -> CurrentJDK
lrwxr-xr-x root wheel Feb : 1.4. -> CurrentJDK
lrwxr-xr-x root wheel Feb : 1.5 -> CurrentJDK
lrwxr-xr-x root wheel Feb : 1.5. -> CurrentJDK
lrwxr-xr-x root wheel Feb : 1.6 -> CurrentJDK
lrwxr-xr-x root wheel Feb : 1.6. -> CurrentJDK
drwxr-xr-x root wheel Feb : A
lrwxr-xr-x root wheel Feb : Current -> A
lrwxr-xr-x root wheel Feb : CurrentJDK -> /Library/Java/JavaVirtualMachines/jdk1..0_13.jdk/Contents
$

【OSX】多个JDK共存时选择要使用的JDK版本的更多相关文章

  1. python2.x和python3.x版本共存时选择启动的版本

    在windows环境下装好python2.7和python3.6之后,我之前一直是用了很笨的办法去区分版本 那就是把各个版本python安装目录下的python.exe分别改为python2.exe和 ...

  2. 在eclipse中新建Dynamic web project时选择2.5和3.0的区别(里面涉及servlet和tomcat的问题)

    1.是指servlet的版本,是2.5的还是3.0的 servlet3.0以后支持异步 2.dynamic web module和对应的TOMCAT 版本 http://blog.sina.com.c ...

  3. NSIS:卸载时选择组件

    原文 NSIS:卸载时选择组件 有时候,我们想要在卸载时也可以选择组件,进行定制性的卸载,那么,以下文字将简略讨论这个问题: 题外:我们想要卸载时选择组件,当然是在安装时要有组件选择页面的前提下,也就 ...

  4. SQL面试题:有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列

    .请教一个面试中遇到的SQL语句的查询问题 表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列. ------------------- ...

  5. 用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。

    数据库中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列. 方法一: select (case when a>b then a el ...

  6. 解决多版本共存时,python/pip等命令失效

    问题呈现: Windows环境下,多版本Python解释器共存时,由于未配置环境变量或者反复卸载重装解释器等原因,CMD交互下输入Python或者pip等命令时失效 解决方式: 1)配置各个解释器的环 ...

  7. 【OSX】解决编译AOSP时需要10.5/10.6 SDK下载

    有人遇到的是需要10.6的sdk. 公司网快下载了xcode, 把里面的10.5sdk和10.6sdk拿出来, 一共才一百多兆…… 下载链接: http://pan.baidu.com/s/1gdxG ...

  8. Fedora Server 21下OpenJdk和Oracle Jdk共存

    最新文章:Virson's Blog 参考文章:博客园-三维蚂蚁 Linux公社 1.首先需要下载对应平台的Jdk:Oracle 官网 2.使用yum或rpm命令安装Jdk: yum install ...

  9. 一、数据库表中字段的增删改查,二、路由基础.三、有名无名分组.四、多app共存的路由分配.五、多app共存时模板冲突问题.六、创建app流程.七、路由分发.八、路由别名,九、名称空间.十、反向解析.十一、2.x新特性.十二、自定义转换器

    一.数据库表中字段的增删改查 ''' 直接在modules中对字段进行增删改查 然后在tools下点击Run manage.py Task执行makemigrations和migrate 注意在执行字 ...

随机推荐

  1. Spark官方文档翻译(一)~Overview

    Spark官方文档翻译,有问题请及时指正,谢谢. Overview页 http://spark.apache.org/docs/latest/index.html Spark概述 Apache Spa ...

  2. Android 面试问答

    Android 面试问答 目录 数据结构和算法 java核心知识 Android核心知识 架构 设计相关问题 相关工具和技术 Android 测试驱动开发 其他 数据结构和算法 ******关于此类问 ...

  3. Android开发之页面跳转传递list集合

    这篇随笔这里详细记录两个activity之间如何传递list集合中的数据. 1.首先要对javabean进行序列化处理,即实现Serializable. package com.anhua.bean; ...

  4. JS生成PDF文件

    代码: var pdf = new jsPDF('p','pt','a4'); pdf.internal.scaleFactor = 1; //可以调整缩放比例 var options = { //p ...

  5. vue-computed计算属性

    计算属性:用来封装你想对一个属性进行的操作 computed VS mothod实现的效果和定义一个methods中的function相同,但是他们的区别在于:methods的function当触发重 ...

  6. Egret中使用P2物理引擎

    游戏中的对象按照物理规律移动,体现重力.引力.反作用力.加速度等物体特性,实现自由落体.摇摆运动.抛物线运动,以及物理碰撞现象的模拟.用于模拟物理碰撞.物理运动的引擎称为物理引擎. 来自瑞典斯德哥尔摩 ...

  7. python+selenium—webdriver入门(二)

    本文中主要介绍webdriver常见的对象定位方法: 一.对象定位的目的 二.常见的对象定位方法 一.对象定位的目的: 1.操作对象 2.获得对象的属性,如:对象的class属性.name属性等 3. ...

  8. 20154305 齐帅 PC平台逆向破解

    Exp1 PC平台逆向破解 一.实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时 ...

  9. Android 音乐(音效)播放方式总结

    一.音效的分类 音效按照作用的不同,可以将音效分为即时音效和背景音乐.两种音效在Android中的实现技术是不同的. 主要的实现方式为:SoundPool.MediaPlayer. 区别在于,Medi ...

  10. video设置autoplay 不起作用

    video 标签上添加 muted https://blog.csdn.net/taiyangmiaomiao/article/details/80266625