失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Linux 下实现不配置环境变量多 Java 版本运行脚本

Linux 下实现不配置环境变量多 Java 版本运行脚本

时间:2019-09-17 14:05:04

相关推荐

Linux 下实现不配置环境变量多 Java 版本运行脚本

目录

前言具体操作原理做法脚本说明 其他其他注意事项 总结

前言

当一个服务器因为各种原因需要安装多版本的 Java 的时候,切换不同环境运行 Java 费时费力,如果直接跟对应版本 Java 的全路径又麻烦。此处使用简便的方法,不切换环境变量即可做到如下的操作。

# 使用 Java 17 来运行 Jar 包java17 -jar test-17.jar# 使用 Java 8 来运行 Jar 包java8 -jar test-8.jar# 使用 nohup 不挂断来后台运行 Jar 包nohup java17 -jar test-17.jar &# 全路径运行/home/java/17/bin/java -jar test-17.jar

具体操作

原理

使用 Linux 下 shell 脚本来运行 Java,如下:

# test.sh 文件/home/java/17/bin/java -jar test-17.jar

上述 shell 脚本运行之后,即可在 Java 17 环境下运行test-17.jar文件。同理,利用好 shell 脚本就能实现 Java 版本自由。

做法

在可以引用到全局的路径下,如/usr/bin目录下新建java17文件,写入如下语句:

# [你的 Java bin 路径] ${@:1}# 我本地的如下/home/java/17.0.2/bin/java ${@:1}

然后赋予运行的权限,如使用chmod 777 java17来确保这个文件有全局运行的权限。

脚本说明

前一部分,也就是/home/java/17.0.2/bin/java这块语句,就是本机要使用的 Java 的 bin 目录的路径;后一部分${@:1}则是命令行参数,从索引 index = 1 to end 的所有参数。

如果命令如下:java17 -jar test-17.jar --spring.profiles.active=dev,那么${@:1}代表的就是-jar test-17.jar --spring.profiles.active=dev的内容。也就是在 dev 环境下运行了对应的 Jar 包。

其他

按照上述配置后,运行如下代码可以出现如下不同的 version,更加说明了脚本的可用性。

java17 --versionopenjdk 17.0.2 -01-18OpenJDK Runtime Environment (build 17.0.2+8-86)OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)

java8 -versionjava version "1.8.0_321"Java(TM) SE Runtime Environment (build 1.8.0_321-b07)Java HotSpot(TM) 64-Bit Server VM (build 25.321-b07, mixed mode)

其他注意事项

当使用如上方法并使用 nohup 不挂断运行之后,查看运行的进程后,可以看到两个进程,一个是 shell 进程,一个是 Java 进程。如果只 kill shell 进程之后,Java 仍会继续运行。如果只 kill Java 进程,那么两个都会结束。所以 kill 的时候注意进程区分。

总结

上述利用 shell 来执行不同版本的 Java,同样可以转移到其他不同版本的软件中,或者给其他 Java 命令配置不同的环境,比如 javac、jstack 等。

这样子做了之后,就能更加快捷地使用不同环境的软件。

转载注明出处。

如果觉得《Linux 下实现不配置环境变量多 Java 版本运行脚本》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。