序
本文主要講述一下命令行一鍵切換java版本的幾種方式
背景
java現(xiàn)在版本發(fā)布相對(duì)以前比較頻繁了,java9還沒來得及用,java10就出來了雷猪,2018年9月份java11也要來了棍辕,于是就有需求在筆記本電腦上裝多個(gè)版本的java,一鍵切換就變得極為迫切嘹承。
zsh function實(shí)現(xiàn)
~/.zshrc
function jvm {
version=$1
case "$version" in
9)
export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home'
;;
10)
export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home'
;;
*)
export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home'
;;
esac
}
值得注意的是這個(gè)命令只對(duì)當(dāng)前命令窗口有效。新開的窗口還是使用~/.zshrc里頭原來配置的JAVA_HOME版本如庭。
使用實(shí)例
jvm 8
java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
jvm 9
java -version
java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
jvm10
java -version
openjdk version "10" 2018-03-20
OpenJDK Runtime Environment 18.3 (build 10+46)
OpenJDK 64-Bit Server VM 18.3 (build 10+46, mixed mode)
jenv
jenv有點(diǎn)類似node的nvm之類的用來管理多版本
安裝
brew install jenv
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(jenv init -)"' >> ~/.zshrc
mkdir -p ~/.jenv/versions
注冊(cè)java版本
jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home
查看版本
jenv versions
* system (set by /Users/demo/.jenv/version)
1.8
1.8.0.151
10
9
openjdk64-10
oracle64-1.8.0.151
oracle64-9
切換
? ~ jenv local 1.8
? ~ java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
? ~ jenv local 9
? ~ java -version
java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
? ~ jenv local 10
? ~ java -version
openjdk version "10" 2018-03-20
OpenJDK Runtime Environment 18.3 (build 10+46)
OpenJDK 64-Bit Server VM 18.3 (build 10+46, mixed mode)
這個(gè)local作用當(dāng)前窗口以及之后新開的窗口
相對(duì)于local叹卷,有個(gè)global,可以用來設(shè)置默認(rèn)的版本坪它,不過我這邊貌似不起作用骤竹,先忽略這個(gè)
maven
jenv enable-plugin maven
jenv的這個(gè)命令可以強(qiáng)制maven使用jenv配置的java版本
小結(jié)
切換java版本的本質(zhì)還是修改JAVA_HOME環(huán)境變量,需要注意切換后該環(huán)境變量的作用域往毡,jenv可以作用到之后新打開的窗口蒙揣。