目录

如何在多个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

e

c

h

o

" {x}" | grep -q "

s t r B " r e s u l t

{strB}" result=

s

t

r

B

"

r

e

s

u

l

t

= ?

echo “result=

r e s u l t x

{result} x=

r

e

s

u

l

t

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:

J

A

V

A

H

O

M

E

/

b

i

n

: 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

e

c

h

o

" {x}" | grep -q "

s t r B " r e s u l t

{strB}" result=

s

t

r

B

"

r

e

s

u

l

t

= ?

echo “result=

r e s u l t x

{result} x=

r

e

s

u

l

t

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:

m

y

N

e

w

P

a

t

h

: JAVA_HOME/bin

echo $PATH

vi ~/.bash_profile

添加你刚才保存脚本的路径

#java_home change by java8,java11 shell command

export PATH=$PATH:/{你的路径脚本路径}

source ~/.bash_profile

好了。现在可以测试一下了。

source java11

https://i-blog.csdnimg.cn/blog_migrate/d779145d6cf53463cfcbf0a327eaebc0.png

source java8

https://i-blog.csdnimg.cn/blog_migrate/0b039c1717970ac8c704ba0d55b19e6c.png

到此,测试成功,可以方便的使用了.