如何在多個java版本之間隨意切換Java環境
軟體開發和測試中經常要在不同的Java版本之間來回切換,最常見的是從其他Java版本(Java9,Java10,Java11)切換到Java8, 特別是使用Scala,Spark,目前還只是支援java8,必須切換到java8環境,否則無法正常編譯和執行.
這個問題,我有個比較好的解決辦法:
建立一個目錄,存放一下java8 java11 2個環境切換指令碼.
/Users/happy/happyscript
happy:happyscript happy$ ls
java11 java8
happy:happyscript happy$
happy:happyscript happy$ which java
/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/bin/java
cd /Library/Java/JavaVirtualMachines/
$ ls
jdk-10.0.1.jdk jdk-11.jdk jdk1.8.0_102 jdk1.8.0_181.jdk
發現原來macbook 上的java 都安裝在這裡.
下面建立2個java8,java11 指令碼,內容如下:
happy:happyscript happy$ more java8
#!/bin/bash
#這個程式請用 source java8 執行,環境變數才能儲存在當前shell環境裡.
echo “這個程式請用 source java8 執行,環境變數才能儲存在當前shell環境裡.”
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home
echo JAVA_HOME is $JAVA_HOME
arr=$(echo $PATH | tr : ‘\n’)
PATH=""
strB=“JavaVirtualMachines”
myNewPath=""
for x in $arr; do
echo
{x}" | grep -q "
?
echo “result=
{x} strB=${strB}”
if [[ $x = *"JavaVirtualMachines"* ]]; then
echo $x
else
export myNewPath=$myNewPath:$x
fi
done
export PATH=
myNewPath
echo $PATH
java -version
$ more java11
#!/bin/bash
#這個程式請用 source java11 執行,環境變數才能儲存在當前shell環境裡.
echo “#這個程式請用 source java11 執行,環境變數才能儲存在當前shell環境裡.”
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home
echo JAVA_HOME is $JAVA_HOME
arr=$(echo $PATH | tr : ‘\n’)
PATH=""
strB=“JavaVirtualMachines”
myNewPath=""
for x in $arr; do
echo
{x}" | grep -q "
?
echo “result=
{x} strB=${strB}”
if [[ $x = *"JavaVirtualMachines"* ]]; then
echo $x
else
export myNewPath=$myNewPath:$x
fi
done
export PATH=
JAVA_HOME/bin
echo $PATH
vi ~/.bash_profile
新增你剛才儲存指令碼的路徑
#java_home change by java8,java11 shell command
export PATH=$PATH:/{你的路徑指令碼路徑}
source ~/.bash_profile
好了。現在可以測試一下了。
source java11
source java8
到此,測試成功,可以方便的使用了.