如何在多个java版本之间随意切换Java环境_开心自由天使的博客-程序员宅基地

技术标签: 常见IT基础  经验分享  Java  java  常用工具  shell  Scala  自动化运维  Spark  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 " xecho"{x}" | grep -q " s t r B " r e s u l t = {strB}" result= strB"result=?
echo “result= r e s u l t x = {result} x= resultx={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: JAVAHOME/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 " xecho"{x}" | grep -q " s t r B " r e s u l t = {strB}" result= strB"result=?
echo “result= r e s u l t x = {result} x= resultx={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: 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

在这里插入图片描述

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/happyfreeangel/article/details/84312747

智能推荐

python怎么处理中英文符号网名_python 过滤中文、英文标点特殊符号_weixin_39843698的博客-程序员宅基地

在工作中经常遇到很多特殊的标点符号,像中文标点符号,英文标点符号。英文的标点符号比较容易过滤,而过滤中文的标点符号较麻烦。下面是从邮件中过滤特殊符号的方式供参考。下面是一封垃圾邮件的过滤实例:"想做/ 兼_职/学生_/ 的 、加,我Q: 1 5. 8 0. !!?? 8 6 。0. 2。 3 有,惊,喜,哦"邮件中的“!?。、”都是中文的,而“/.”是英文的下面是过滤方式:#-*-...

android启动微信应用程序,android 从微信分享的网页中启动APP_蛋疼得有理的博客-程序员宅基地

项目中有个需求,让用户可以从分享到微信的网页中启动自己的APP,如果本机没有安装该应用程序则打开应用商店并打开该程序在商店中的搜索结果页面。在这里跟大家分享一下:首先需要和服务端协商好网页中按钮点击事件的字段启动应用程序启动应用程序各个项目含义如下所示:scheme:判别启动的App。host:path:传值时必须的keyquery:获取值的Key和Value如果只是启动APP而不需要传值的话,一...

java获取当前系统前一天,当天,后天日期_漂浮的鱼~的博客-程序员宅基地

获取前一天日期public static Date getNextDay(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DAY_OF_MONTH, -1); date = calendar.getTime(); re

注册机老是被删除_pana hema的博客-程序员宅基地_为什么注册机一打开就没有了

有一次打开注册机时,它闪一下就没了,我也把杀毒软件,防火墙和网络关掉了,还是被删除了。解决方法:我的杀毒软件是火绒安全软件,打开它,点开菜单;打开信任区;点击添加文件夹;将注册机所在文件的路径加进去;然后注册机再打开就不会被删了。...

mysql left函数的使用方法_mysql的left函数_胡安黄的博客-程序员宅基地

1、LEFT()函数是一个字符串函数,它返回具有指定长度的字符串的左边部分。LEFT(Str,length);接收两个参数:str:一个字符串;length:想要截取的长度,是一个正整数;2、示例:SELECT LEFT('2019-01-30',0);SELECT LEFT('',3);结果为空;SELECT LEFT('2019-01-30',NULL);SELECT LEFT(NULL,3)...

随便推点

MATLAB中squeeze函数的作用_what_lei的博客-程序员宅基地_squeeze matlab

squeeze:  除去size为1的维度B = squeeze(A)描述:B = squeeze(A),B与A有相同元素,但所有只有一行或一列的维度(a singleton dimension)被去除掉了。二维阵列不受squeeze影响; 例如:src=rand(4,1,3)产生一个均匀分布的阵列,共3页,每页4行1列,经过squeeze后,1列的那个维度就没有了,只剩下

python 读excel每行替换_Python读写改Excel的方法_weixin_39602560的博客-程序员宅基地

一.读Excel表(xlrd模块)import xlrd #导入模块data = xlrd.open_workbook('./report/result.xls') #打开exceltable = data.sheets()[0] #读sheet1# table = data.sheet_by_name(u'Sheet1') #或通过sheet名获...

修改MFC程序的图标_mfc修改应用程序图标_sanqiuai的博客-程序员宅基地

1.在项目的资源文件夹下,找到vs的默认的ico图标文件并移除掉(也可以不移除 强迫症)2.右键项目文件夹,点击添加,选择资源,选中Icon,点击导入,将自己的ico图标添加到项目中3.在以上操作之后,点击后缀名为rc的文件,会在该文件中找到我们添加进去的ico图标资源和之前残留的默认ico资源(仍然删除掉它)可以右键该文件,选择属性,修改该文件的ID为我们想要的名字4.此时编译会出错dwad是默认的ico图标的id名,在MFC工程的代码中使用了这个ID,但现在ID已经被删除了,找到这

5.29ajax传值为乱码的问题_kuaidi8的博客-程序员宅基地

======================================================注:重要!程序员如何有效的放松身心!下班后做什么?======================================================5.29ajax传值为乱码的问题最简单的方法就是在web.config中加入就能解决url乱码的问题。因为

Mari 毛孔处理_喜欢挤牙膏的博客-程序员宅基地

调整paint buffer:开启Edge Mask:可以看到,这里效果并不好:切换到Flat显示:添加AO程序纹理层:

推荐文章

热门文章

相关标签