ubuntu下多jdk环境轻松却换

news/2024/10/4 7:19:04

在实际coding生活中,维护老项目与开发新项目常是并行的。快速企业java开发jdk版本,收首先要解决的问题。

今天看到一篇Blog,参考配置后完美实现了一键快速切换,nice!!!!!!

环境:

1、ubuntu 22

2、openjdk1.8、openjdk17

具体操作步骤:

1、安装openjdk(略),安装位置如下:

2、jdk17释放 jre

bin/jlink --module-path jmods --add-modules java.desktop --output jre

 

3、jenv 的安装和使用,下载

git clone https://github.com/jenv/jenv.git ~/.jenv

4、将jenv临时加入环境变量,先让其可以管理java环境

echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(jenv init -)"' >> ~/.bashrc
source ~/.bashrc

5、将不同jdk加入到jenv中(add 路径写自己的哦)

jenv add /usr/lib/jvm/java-8-openjdk-amd64
jenv add /usr/lib/jvm/java-17-openjdk-amd64

检查是否加入成功

jenv versions

 6、快速调整环境变量

6.1 创建一个文件夹来存储不同jdk环境变量配置文件与切换脚本

mkdir ~/jdk_env

6.2 创建各个jdk对应的环境变量文件

openjdk8的环境变量文件:env_open_jdk_8

JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
JRE_HOME=${JAVA_HOME}/jre
CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

openjdk17的环境变量文件:env_open_jdk_17

JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
JRE_HOME=${JAVA_HOME}/jre
CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

 6.3 创建环境变量切换脚本:

open_jdk_8.sh代码如下:

 

#!/bin/bashecho Change JAVA_HOME Environment to Open JDK 1.8
sudo cp /home/tomcat/jdk_env/env_open_jdk_8 /etc/environment#设置一个修改标识,.bashrc中会读取该修改标识
export ENV_CHANGE=1
source ~/.bashrc#请注意版本号,可通过jenv versions查看
jenv global openjdk64-1.8.0.402
java -version
echo JAVA_HOME : $JAVA_HOME
echo Change Environment Done!

open_jdk_17.sh,仅需修改上面红色标注部分(略)

6.4、编辑用户环境变量文件.bashrc,在文件末尾增加如下内容:

#第一部分:增加alias,快捷命令,这里写自己的脚本位置
alias jdk8='source /home/tomcat/jdk_env/open_jdk_8.sh'
alias jdk17='source /home/tomcat/jdk_env/open_jdk_17.sh'#第二部分:在.bashrc文件末尾增加以下内容#我这里根据自己的需求增加了node和maven相关环境变量配置
#SET PATH FOR NODEJS
export NODE_HOME=$HOME/.node-v16
#SET PATH FOR MAVEN
export MAVEN_HOME=$HOME/.maven-3.9.6#这里是先配置默认PATH,maven、node相关的根据自己需求来
export PATH=$MAVEN_HOME/bin:$NODE_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/binPATH=$HOME/.jenv/bin:$PATH
#检查JRE_HOME的值是否已经设置好,如果未设置好,则读取一下配置
if [ "$JRE_HOME" = '${JAVA_HOME}/jre' -o "$ENV_CHANGE" = '1' ]; thensource /etc/environmentexport ENV_CHANGE=0
fi#增加jenv 以及 java home到 PATH
export PATH="$HOME/.jenv/bin:$JAVA_HOME/bin:$PATH"
eval "$(jenv init -)"#执行完 上有条   eval "$(jenv init -)" 后,JAVA_HOME 会失效,需要重要加载一下JAVA环境变量
if [ -z "$JAVA_HOME" ]; thensource /etc/environment
fi

6.5、应用测试

使环境变量生效:

source ~/.bashrc

测试jdk环境切换:

jdk8

 

完美!!!

 

参考Blog:https://blog.csdn.net/u011278722/article/details/137354015

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/28999.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

CentOS 7 部署 NET6.0 项目过程

1、环境配置NET6.0 环境搭建主要是SDK 和 runtime 的安装,下图截自官网说明了SDK 和 runtime 的关系CentOS7 安装SDK 方法第一步:rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm第二部:yum install dotnet-sdk-6.0也可以只安装对应的…

细说夜莺监控系统告警自愈机制

虽说监控系统最侧重的功能是指标采集、存储、分析、告警,为了能够快速恢复故障,告警自愈机制也是需要重点投入建设的,所有可以固化为脚本的应急预案都可以使用告警自愈机制来快速驱动。夜莺开源项目从 v7 版本开始内置了告警自愈模块,本文将详细介绍告警自愈的原理和实现。…

程序员副业创富:业余时间解锁首笔财富里程碑

在这个充满机遇的数字时代,我,一个普通的程序猿,编程爱好者,终于在云端源想这个平台上收获了属于我的第一桶金。这是一个关于兼职、学习与成长的故事,希望能激发同在编程路上的你,勇敢迈出那一步。 先晒晒我的首笔收入:一个普通的周末,我像往常一样,泡上一杯咖啡,坐在…

(一)文本分类经典模型之CNN篇

这篇blog对NLP领域的基本任务文本分类的CNN经典模型做了梳理CNN源于计算机视觉研究,后来诸多学者将其应用于短文本分类,其基本结构如下图所示:由上图可知,基于CNN的短文本分类模型,通常包括输入层、卷积层、池化层、全连接层和输出层五部分,其中卷积层和池化层是最为关键…

Apache DolphinScheduler 3.3.0 版本重磅更新提前看!

Apache DolphinScheduler 3.3.0版本终于要在万众期待中发布啦!本次发版将有重大功能更新,包括架构上的调整。 为了让广大用户提前尝鲜,社区特别准备了直播活动提前揭秘3.3.0版本中的重要更新,到时候你将会了解到这些信息:3.3.0版本的工作流引擎改进 任务执行流程的优化 架…

【触想智能】工业级平板电脑五大特征与应用领域分析

工业级平板电脑是专供工业环境使用的工业控制计算机,也被称为工控一体机。工业级平板电脑基本性能及兼容性与商用平板电脑几乎相同,但是工业级平板电脑更注重在不同环境下的稳定性能,因此,工业级平板电脑与普通的商用平板电脑存在一定的区别。一、工业级平板电脑的五大特征…

TCP的三次握手和四次挥手

TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的“连接”,其实是客户端和服务端保存的一份关于对方的信息,如ip地址、端口号等。TCP可以看成是一种字节流,它会处理IP层或以下的层的丢包、重复以及错误问…

新版宝塔加密数据解密

宝塔更新了数据存储的方式,PanelForensics会尽快支持最近啊,fic中出现了宝塔,结果PanelForensics居然没有梭哈,这怎么行?? 于是我就一通分析,发现这个版本更新了架构,并且对密码的加解密是通过调用二进制依赖进行实现的 我这里就以mysql的密码为例,在新版本中,mysql的…