环境:

MAC AIR,OS X 10.10,64位

历史:

过去 Mac 上的 Java 都是由 Apple 自己提供,只支持到 Java 6,并且OS X 10.7 开始系统并不自带(而是可选安装)(原自带的是1.6)。

后来 Apple 加入 OpenJDK 继续支持 Java 6,而 Java 7 将由 Oracle 负责提供。

在终端中输入java -version可查看当前JDK版本信息,如果还没安装任一JDK,就会提示安装,点击后会跳到oralce java的下载网页。

安装包(注意都是下载mac下的dmg安装包):

JDK 1.6(验证OS X 10.10可用):http://support.apple.com/kb/DL1572

JDK 1.7&1.8(1.7在页面下方):http://www.oracle.com/technetwork/java/javase/downloads/index.html

安装:

dmg安装包,安装过程如一般程序,略

最终安装目录(版本号根据情况略有不同):

JDK 1.6:

/System/Library/Java/JavaVirtualMachines/1.6.0.jdk

JDK 1.7&1.8:

/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk

/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk

推荐方式A:

Java代码  
  1. vi .bash_profile 输入以下内容
  2. 然后执行source .bash_profile生效新配置
Java代码  
  1. # Mac默认 JDK 6(Mac默认自带了一个jdk6版本)
  2. export JAVA_6_HOME=`/usr/libexec/java_home -v 1.6`
  3. # 设置 JDK 7
  4. export JAVA_7_HOME=`/usr/libexec/java_home -v 1.7`
  5. # 设置 JDK 8
  6. export JAVA_8_HOME=`/usr/libexec/java_home -v 1.8`
  7. #默认JDK 6
  8. export JAVA_HOME=$JAVA_6_HOME
  9. #alias命令动态切换JDK版本
  10. alias jdk6="export JAVA_HOME=$JAVA_6_HOME"
  11. alias jdk7="export JAVA_HOME=$JAVA_7_HOME"
  12. alias jdk8="export JAVA_HOME=$JAVA_8_HOME"

默认jdk为1.6,执行jdk6或jdk7或jdk8后,通过java -version可看到已切换成相应版本。

推荐方式B:

1、安装jenv

执行:curl -s get.jenv.io | bash

jenv参考(关键是方便别的java工具管理):https://github.com/linux-china/jenv/wiki/Chinese-Introduction

2、进入jenv目录,然后建相关目录:

Java代码  
  1. cd ~/.jenv/candidates/
  2. mkdir java
  3. cd java
  4. mkdir 1.6
  5. mkdir 1.7
  6. mkdir 1.8

3、执行以下命令:

Java代码  
  1. ln -s /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin ~/.jenv/candidates/java/1.6
  2. ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin ~/.jenv/candidates/java/1.7
  3. ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin ~/.jenv/candidates/java/1.8

大功告成:

1、最先默认的jdk一般是你最后安装的那jdk。

2、切换版本:jenv use java 1.8

3、设置缺少版本:jenv default java 1.6

不推荐方式:

Java代码  
  1. #区别在于:此部分是写死路径的
  2. export JAVA_6_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
  3. export JAVA_7_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
  4. export JAVA_8_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home
  5. #默认JDK 6
  6. export JAVA_HOME=$JAVA_6_HOME
  7. #alias命令动态切换JDK版本
  8. alias jdk6="export JAVA_HOME=$JAVA_6_HOME"
  9. alias jdk7="export JAVA_HOME=$JAVA_7_HOME"
  10. alias jdk8="export JAVA_HOME=$JAVA_8_HOME"

 

根据苹果的官方说明,Mac OS X 10.5 及以后的版本应该使用 /usr/libexec/java_home 命令来确定 JAVA_HOME (推荐方式A就是依据此原理)。

例:

Java代码  
  1. //查看默认jdk的安装路径
  2. /usr/libexec/java_home
  3. //查看jdk 1.6的安装路径
  4. /usr/libexec/java_home -v 1.6

而在此之前的版本由于没有这个命令,则应该使用固定的 /Library/Java/Home 目录,也就是直接在环境变量中写死。

Java代码  
  1. //下面的几个目录其实是等价的链接关系,都指向的是默认的JDK。但是硬编码方式,不推荐。
  2. JAVA_HOME=/Library/Java/Home
  3. JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
  4. JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home

因为不同的 Java 版本和不同的 Java 实现可能安装在了不同的目录下,所以使用硬编码的目录会有如下缺点:

  • 安装或升级新的 Java 后需要重新设置 JAVA_HOME(尤其是带版本号的目录)
  • 无法适应不同的 Java 实现(Apple和Oracle的)
其他分析:
1、打开终端输入执行:which java,显示/usr/bin/java
2、执行cd /usr/bin/,再执行ls -ll |grep java,可看到java此命令是link到/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
3、执行:cd /System/Library/Frameworks/JavaVM.framework/Versions/ 进入后,再执行ls -ll,可看到Current -> A,也就是Current目录link到A目录。而A目录在安装第一个JDK时就存在,用来JDK多版本管理使用的(猜测是使用到JAVA_HOME)。
另外:
/System/Library/Frameworks/JavaVM.framework/Versions/ 下有多个不同(低)版本的目录,但它们链接的都是 CurrentJDK 目录。总之,这些Java都是苹果提供的Java,Oracle 或 OpenJDK 提供的 Java 不在此目录中。
据说以前可在系统设置中“Java Preferences”对话框可设置当前jdk,再自动调整A目录内容,但我没看到过。
Java 7 需要 Mac OS X 10.7.3 (Lion) 及以上版本才能安装。在浏览器中运行Java要求是64位浏览器,所以不支持Chrome, Safari 或 Firefox 没问题。

转载于:https://www.cnblogs.com/luodengxiong/p/5736806.html

MAC下安装多版本JDK和切换几种方式相关推荐

  1. 在Mac下安装和卸载JDK

    在Mac下启动Jmeter的时候终端报了个错: WARNING: package sun.awt.X11 not in java.desktop 在终端输入java -version,查看自己的jdk ...

  2. PyTorch 学习之Ubuntu16.04 下安装 PyTorch(conda与pip两种方式安装)

    一.pip安装Pytorch 这里已经默认已经安装好了显卡驱动,cuda等.我这里安装的是cuda9与cudnn7,显卡驱动号:Driver Version: 384.130 : 1.进入PyTorc ...

  3. Mac下安装多版本python

    1.安装Homebrew 将命令行复制至终端,进行安装. /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/H ...

  4. brew install php55redis,Mac下安装LNMP环境

    Mac下搭建lamp开发环境很容易,有xampp和mamp现成的集成环境.但是集成环境对于经常需要自定义一些配置的开发者来说会非常麻烦,而且Mac本身自带apache和php,在brew的帮助下非常容 ...

  5. Mac下安装多个版本的JDK并随意切换

    最近在学习JDK9的一些新特性,但是日常使用基本上都是基于JDK8,因此,需要在Mac环境下安装多个版本的JDK,并且确保能够随意切换. JDK9下载 JDK9下载地址:https://www.ora ...

  6. python安装pip_在MAC下安装pip,并关联到相应的python版本

    在MAC下安装pip,并关联到相应的python版本 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 说明 不多说了,说就是电脑 ...

  7. Mac中安装多个JDK版本

    丢失的牛羊可以找回:但是失去的时间却无法找回. 在日常工作中,我们可能会涉及到多个 JDK 版本的使用,接下来就给大家分享在Mac中安装多个JDK版本,并且可以任意切换 下载所需版本 官网地址:htt ...

  8. Mac多版本jdk的切换

    1.我有两个版本的jdk:15 和 8 默认安装路径:/Library/Java/JavaVirtualMachines/ 2.在15和8之间切换: 2.1打开终端,输入如下命令:open -e .b ...

  9. mac下安装redis

    mac下安装redis redis的介绍这里就不多说了下面就直奔主题. 一 redis安装 首先,redis的默认端口为6379 下载mac版redis安装包,下载地址https://redis.io ...

最新文章

  1. 字符串匹配数据结构 --Trie树 高效实现搜索词提示 / IDE自动补全
  2. 自动驾驶规划方法综述
  3. Python 技术篇-通过pip命令下载python库到指定位置不用安装方法,查看pip下载库的源码实例演示,pip命令大全
  4. Golang之funcval结构体
  5. JVM调优总结(5):典型配置
  6. 登录:应用程序错误通知
  7. batchsize大小对训练速度的影响
  8. C语言之32个关键字
  9. Centos7 搭建 hadoop3.1.1 集群教程
  10. 科学计算机统计模式中中间数据输错怎么办,科学计算器在统计功能中如何清除以前不需要的数据?...
  11. java设计模式之装饰者模式学习
  12. Python:下载安装包
  13. DSOFramer使用
  14. 关于EXCEL打开VBA时发生vbe6ext.olb不能被加载及内 存溢出错误的解决方法
  15. vue3内置组件(Teleport组件,Fragment组件)-传送组件,减少层级
  16. 智能环境监控系统解决方案及应用背景
  17. MySQL5.7和MySQL8的区别
  18. EBS开发_创建AP付款
  19. 三方支付公司有哪些?
  20. 清除浮动影响的几种方法

热门文章

  1. 路径前面加/和不加/
  2. python OpenCV 绘图函数
  3. 使用 webpack 4 和 Babel 构建 React 应用(2018)
  4. sqlsourcesafe mysql_mysql权限问题,看不到其它的库!
  5. java 默认焦点_按钮活动焦点阴影默认问题
  6. asp.net html5 异步,asp.net core 系列 5 项目实战之:NetCore 的 async 和 await(参考自:Microsoft教程)...
  7. java 百亿计算器_设计一个一百亿的计算器
  8. 《STL源码剖析》学习--六大组件
  9. 【Linux】35. python脚本重命名各子目录下的图片
  10. 《深入理解java虚拟机》笔记2——GC算法与内存分配策略