使用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的版本。