A-A+

如何在 OS X 中使用多个版本JDK

2016年08月03日 Linux 教程 暂无评论 阅读 594 次
升级macbook小白的硬盘成SSD后,重新安装了系统和JDK8,但是启动eclipse还是报告需要安装JDK6,于是也按照提示安装了Apple JDK6,这导致系统中有两个JDK,一个是Oracle的JDK8,另外一个Apple的JDK6,混乱开始了。
 
在命令行执行java -version,提示是JDK8,好像一切正常,但执行 mvm clean install 却发现maven使用了JDK6!迷惑了,这是怎么回事呢?
 
———————— 华丽的分割线 ————————
 

原来 OSX 上的Java安装路径分两派,一是Apple派,另外一个是Oracle派。

Oracle派将JDK安装到 /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents 目录;
Apple派将JDK安装到 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents 目录;
 
系统默认的JDK版本,是通过 link 来实现的,也就是说java程序如maven、eclispe选择哪个派别的JDK是通过各自的启动脚本,按照约定的link文件去查找java程序的。比如 maven 就会先找Apple的JDK后找Orale的JDK。
 
Apple派的JDK,支持多版本,怎么支持呢?很简单,就是把文件 /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK link 到某个版本的JDK 就好了。
 
Oracle派的JDK也支持多版本,他是怎么实现的呢?原来也学Apple一样,通过 link 到不同版本的JDK安装路径来实现,Oracle 的 link 文件是 /System/Library/Frameworks/JavaVM.framework/Versions/Current
 
怎么解决之前碰到的 maven 使用 Apple 的JDK6,而不会用最新的Oralce JDK8 的问题呢?
 
先看下maven的启动脚本,原来很多java框架,会给开发者一个机会,去优先指定你使用的JDK目录,比如maven就会先查看是否JAVA_HOME有设定,如果有设定就使用设定的jdk路径,否则才去找Apple的缺省JDK,最后找Oracle的默认JDK。于是解决方案就是:设定JAVA_HOME环境变量到 Oracle JDK8的安装目录。
 
具体命令如下:
 
编辑 ~/.bash_profile,添加下面行
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
 
附录:
 
如果要修改 eclipse 启动时使用的 JDK,可以这样:
编辑 eclipse_kepler/Eclipse.app/Contents/MacOS 中的 eclipse.ini,加入下面两行
-vm
/Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home/bin/java
 

Ubuntu 14.04安装JDK1.8.0_25与配置环境变量 2015-01/112030.htm 

CentOS 搭建JDK环境  2015-06/118879.htm 

Ubuntu 14.04安装JDK1.8.0_25与配置环境变量  2015-01/112030.htm 

Ubuntu 14.04 LTS安装Oracle JDK 1.8  2014-11/109216.htm 

CentOS6.3安装JDK和环境配置 2012-09/70780.htm 

Ubuntu 14.04 安装 JDK8  2014-09/106218.htm 

Ubuntu下安装JDK图文解析 2014-09/107291.htm 

本文永久更新链接地址 2016-08/133824.htm 

标签:

给我留言

Copyright © SEARU.ORG 保留所有权利.   Theme  Ality 网站地图 360网站安全检测平台

用户登录

分享到: