设为首页 收藏本站
查看: 1138|回复: 0

[经验分享] MAC下安装多版本JDK和切换几种方式

[复制链接]

尚未签到

发表于 2016-5-18 10:03:09 | 显示全部楼层 |阅读模式
环境:
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:

vi .bash_profile 输入以下内容
然后执行source .bash_profile生效新配置
 

# Mac默认 JDK 6(Mac默认自带了一个jdk6版本)
export JAVA_6_HOME=`/usr/libexec/java_home -v 1.6`
# 设置 JDK 7
export JAVA_7_HOME=`/usr/libexec/java_home -v 1.7`
# 设置 JDK 8
export JAVA_8_HOME=`/usr/libexec/java_home -v 1.8`
#默认JDK 6
export JAVA_HOME=$JAVA_6_HOME
#alias命令动态切换JDK版本
alias jdk6="export JAVA_HOME=$JAVA_6_HOME"
alias jdk7="export JAVA_HOME=$JAVA_7_HOME"
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目录,然后建相关目录:

cd ~/.jenv/candidates/
mkdir java
cd java
mkdir 1.6
mkdir 1.7
mkdir 1.8
  
  3、执行以下命令:

ln -s /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin ~/.jenv/candidates/java/1.6
ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin ~/.jenv/candidates/java/1.7
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
 
不推荐方式:

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

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

//查看默认jdk的安装路径
/usr/libexec/java_home
//查看jdk 1.6的安装路径
/usr/libexec/java_home -v 1.6
  
  而在此之前的版本由于没有这个命令,则应该使用固定的 /Library/Java/Home 目录,也就是直接在环境变量中写死。

//下面的几个目录其实是等价的链接关系,都指向的是默认的JDK。但是硬编码方式,不推荐。
JAVA_HOME=/Library/Java/Home
JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
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 没问题。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-218575-1-1.html 上篇帖子: 移动硬盘格式化(pc和mac共用)-菜鸟级解决方案 下篇帖子: 运行在 mac 10.6 上出现的异常
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表