1. 程式人生 > >Java【MacBook pro下安裝兩種版本的jdk並切換】

Java【MacBook pro下安裝兩種版本的jdk並切換】

1. 問題

        最近Mac OS電腦需要配置Hadoop環境,需要用到jdk 1.7。

  1. Java Development Kit (JDK)  
  2. Please note, since there are no available supported OpenJDK 8 packages for Ubuntu 14.04, the Ubuntu 15.04 packages must be   
  3. installed manually. See JDK for Ubuntu LTS 14.04 for precise instructions.  
  4. The master branch of Android in AOSP: Ubuntu - OpenJDK 8, Mac OS - jdk 8u45 or newer  
  5. Android 5.x (Lollipop) - Android 6.0 (Marshmallow): Ubuntu - OpenJDK 7, Mac OS - jdk-7u71-macosx-x64.dmg  
  6. Android 2.3.x (Gingerbread) - Android 4.4.x (KitKat): Ubuntu - Java JDK 6, Mac OS - Java JDK 6  
  7. Android 1.5 (Cupcake) - Android 2.2.x (Froyo): Ubuntu - Java JDK 5  


        於是我安裝了Mac版的jdk 1.7(安裝過程很簡單,下載dmg包之後直接雙擊就好了,預設的路徑是/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home)。

想到了一個辦法:在系統裡安裝兩個版本的jdk,使用的時候通過修改環境變數進行切換,這樣就可以在同一個使用者下進行版本切換了。

        我查了一下資料,看到網上有人提出一種方法:安裝多個版本的jdk,使用alias命令對版本切換的命令重新命名,然後再使用的時候直接呼叫命令的別名就可以了(具體參見http://chessman-126-com.iteye.com/blog/2162466)。關於這個alias命令,從字面上看就是別名的意思,使用者可利用alias,自定指令的別名。(從這一點來看,Mac OS和Linux差不多嘛)。

2. 解決方案

        在Mac OS下開啟終端,輸入如下命令:

  1. vi .bash_profile  
        這個命令執行完了會進入bash_profile檔案裡,我們先敲一下鍵盤上的“i”,讓它進入insert模式,然後輸入以下內容(這裡要依據你安裝的不同的jdk版本來輸入,我的電腦上先安裝了jdk 1.7,之後又安裝了jdk 1.8,我們要先弄清楚他們的目錄在哪裡然後再編輯bash_profile檔案,查詢jdk目錄可以使用命令/usr/libexec/java_home -v,因為電腦裡安裝了多個版本的jdk,如果只輸入上述命令的話他只會告訴你最近一次安裝的jdk的目錄在哪裡,因此,要想查詢不同版本的jdk目錄,應該在“-v”後面空一格再輸入1.7或者1.8或者別的什麼版本號就可以):
  1. # 設定 JDK 7  
  2. export JAVA_7_HOME=`/usr/libexec/java_home -v 1.7`  
  3. # 設定 JDK 8  
  4. export JAVA_8_HOME=`/usr/libexec/java_home -v 1.8`  
  5. #預設JDK 7  
  6. export JAVA_HOME=$JAVA_7_HOME  
  7. #alias命令動態切換JDK版本  
  8. alias jdk7="export JAVA_HOME=$JAVA_7_HOME"  
  9. alias jdk8="export JAVA_HOME=$JAVA_8_HOME"  
        最後我們使用命令
  1. source .bash_profile  
        使之生效就可以了。

3. 實現效果

        先看一下當下的jdk版本

  1. liuyunhaodeMacBook-Pro:~ liuyunhao$ java -version  
  2. java version "1.8.0_101"  
  3. Java(TM) SE Runtime Environment (build 1.8.0_101-b13)  
  4. Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)  
        然後我們使用jdk7這個命令來改變當前的jdk版本,在終端輸入“jdk7”即可,然後再檢視版本:
  1. liuyunhaodeMacBook-Pro:~ liuyunhao$ jdk7  
  2. liuyunhaodeMacBook-Pro:~ liuyunhao$ java -version  
  3. java version "1.7.0_71"  
  4. Java(TM) SE Runtime Environment (build 1.7.0_71-b14)  
  5. Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)  

        成功!