首頁 > 軟體

MAC下安裝多版本JDK和切換幾種方式

2020-06-16 17:36:41

環境:

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 沒問題。

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-08/133825.htm


IT145.com E-mail:sddin#qq.com