如何在 OS X 中使用多個版本JDK
如何在 OS X 中使用多個版本JDK
升級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與配置環境變量
CentOS 搭建JDK環境
Ubuntu 14.04安裝JDK1.8.0_25與配置環境變量
Ubuntu 14.04 LTS安裝Oracle JDK 1.8
CentOS6.3安裝JDK和環境配置
Ubuntu 14.04 安裝 JDK8
Ubuntu下安裝JDK圖文解析
本文永久更新鏈接地址:
http://xxxxxx/Linuxjc/1147426.html TechArticle