1. 程式人生 > >如何在多個java版本之間隨意切換Java環境

如何在多個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 e c h o "

x echo " {x}" | grep -q " s t r B " r e s u l t = {strB}" result= ?
echo “result= r e s u l t x = {result} x= {x} strB=${strB}”

if [[ $x = *"JavaVirtualMachines"* ]]; then
     echo $x
else
     export myNewPath=$myNewPath:$x
fi

done

export PATH= J A V A H O M E / b i n : JAVA_HOME/bin: 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 e c h o " x echo " {x}" | grep -q " s t r B " r e s u l t = {strB}" result= ?
echo “result= r e s u l t x = {result} x= {x} strB=${strB}”

if [[ $x = *"JavaVirtualMachines"* ]]; then
     echo $x
else
     export myNewPath=$myNewPath:$x
fi

done

export PATH= m y N e w P a t h : myNewPath: 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

在這裡插入圖片描述

到此,測試成功,可以方便的使用了.