天天看點

Mac上使用Jenv管理多個JDK版本

使用Java時會接觸到不同的版本。大多數時候我在使用Java 8,但是因為某些架構或是工具的要求,這時不得不讓Java 7上前線。一般情況下是配置JAVA_HOME,指定不同的Java版本,但是這需要人為手動的輸入。如果又要選擇其他版本,就需要對JAVA_HOME重新進行設定。終于,我發現了JEnv。

正如它的官網所宣稱的那樣,它是來讓你忘記怎麼配置JAVA_HOME環境變量的神隊友。使用簡單的指令就可以在不同的Java版本之間進行切換。如果你使用過rbenv,你會發現JEnv就如同rbenv的Java版一樣。

基本使用: 在Mac OS下使用Homebrew安裝JEnv:

> brew install jenv
           

安裝成功後需要進行一下簡單的配置,讓它可以起作用:

> echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
> echo 'eval "$(jenv init -)"' >> ~/.bash_profile
           

好了,JEnv已經安裝好了,讓我們來看一下它找見哪個Java版本了:

> jenv versions
* system (set by /Users/bxpeng/.jenv/version)
           

它隻找到了系統預設的Java,*表示目前選擇的版本。盡管我已經下載下傳了其他版本的Java,但是它并不會自動發現

和rbenv不同的是,JEnv不能自己安裝任何版本的Java,是以需要我們手動安裝好之後再用JEnv指向它們。

安裝Java 7,可以在Oracle進行下載下傳.它将安裝到/Library/Java/JavaVirtualMachines/下;

安裝Java 8,可以在Oracle進行下載下傳.它将安裝到/Library/Java/JavaVirtualMachines/下。

使用jenv add将Java 7、Java 8加入jenv中:

> jenv add /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home/
1.7 added
1.7.0.71 added
oracle64-1.7.0.71 added
           
> jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/
1.8 added
1.8.0.25 added
oracle64-1.8.0.25 added
           

現在運作jenv versions會顯示:

> jenv versions
* system (set by /Users/bxpeng/.jenv/version)
  1.7
  1.7.0.71
  oracle64-1.7.0.71
  1.8
  1.8.0.25
  oracle64-1.8.0.25
           

對于多餘的版本使用jenv remove可以從jEnv中去掉不需要的Java版本:

> jenv remove 1.6
JDK 1.6 removed
           

整理後,再運作jenv versions會顯示:

> jenv versions
* system (set by /Users/bxpeng/.jenv/version)
  1.7.0.71
  1.8.0.25
           

選擇一個Java版本,運作jenv local,例如:

> jenv local 1.8.0.25
> java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
           

OK,我們已經成功地指定了某檔案夾中local的Java版本。我們也可以運作

jenv global

設定一個預設的Java版本,運作

jenv which java

顯示可執行的Java的完整路徑。

你也可以在特定的檔案夾下使用

.java-version

檔案來設定Java的版本。當我需要在Project中使用Java 7時,僅僅需要把1.7.0.71作為内容儲存在

.java-version

檔案中,當進入該檔案夾時,JEnv會自動地幫助我設定local的Java的版本。