Linux安装管理多版本JDK

前言

在之前鄙人还是学生的时候,很老实的作为钉子户坚守 JDK8,但在后续学有小成之后,逐渐的开始尝试不同版本的 JDK,比如 11、17、21 以及未来可期的 24()。因此为了避免频繁的手动修改 Linux 的配置文件,便开始着手在海洋的知识里面找到了下面能让我偷懒的管理方式。

省流:使用 update-alternatives 命令进行管理,但对于要部署不同版本项目的需求人群来说,使用 Docker 做环境隔离相信会更合适

1、JDK下载&安装

对于下载安装相信各位在座的靓仔靓女都是会的,主流的方式多数为使用 yum instal等下载命令进行一键式安装下载,还有一种就是去官网下载对应的安装包自行解压安装。

通过深思熟虑之后,根据我的个人偏好(我安装的软件我做主)以及使用 update-alternatives命令管理(安装过程中不需要编写系统配置文件)等诸多原因,我选择第二种自行解压安装。

这里贴上解压命令,当然了也是为了鄙人我后续方便 CV,对于版本不做推荐,哪个顺眼用哪个:

cd /home/java
tar -zxvf jdk-11.0.18_linux-x64_bin.tar.gz
tar -zxvf jdk-8u351-linux-x64.tar.gz

2、配置版本管理

update-alternatives 命令是 Linux 系统中用于管理软件版本切换的工具,尤其适用于处理多个版本的软件共存的情况。该命令允许系统管理员或用户选择系统默认使用的软件版本,通过维护符号链接来实现不同版本之间的切换。

以上介绍来自于 AI 大聪明的回答,毕竟咱也是第一次遇到这命令

在自己的控制台中使用 update-alternatives --help 命令即可查看到对应的命令说明:

[root@localhost java]# update-alternatives --help
alternatives(备用)版本 1.7.6 - 版权 (C) 2001 红帽公司
在 GNU 公共许可条款下,本软件可被自由地重发行。

用法:update-alternatives --install <链接> <名称> <路径> <优先度>
                    [--initscript <服务>]
                    [--family <family>]
                    [--slave <链接> <名称> <路径>]*
       update-alternatives --remove <名称> <路径>
       update-alternatives --auto <名称>
       update-alternatives --config <名称>
       update-alternatives --display <名称>
       update-alternatives --set <名称> <路径>
       update-alternatives --list

common options: --verbose --test --help --usage --version --keep-missing
                --altdir <目录> --admindir <目录>

在配置之前最好查看一下自己使用的系统是否有对应的软链存在,如果存在可进行移除(后续追加应该也是可以的)

# 查看是否存在
update-alternatives --config java

# 如果存在查询结果如下
共有 2 个提供“java”的程序。

  选项    命令
-----------------------------------------------
 + 1           /home/java/jdk1.8.0_351/bin/java
*  2           /home/java/jdk-11.0.18/bin/java

# 逐一移除,下面的“命令地址”为上面查询出来的路径,如/home/java/jdk1.8.0_351/bin/java
update-alternatives --remove java 命令地址

# 删除完成后,查询判断是否还有存在
update-alternatives --config java

这个时候就可以愉快的进行配置多个版本的 JDK 咯,此处使用过的命令为 update-alternatives --install <链接> <名称> <路径> <优先度>,其中:

  • <链接> 是指向 /etc/alternatives/<名称> 的符号链接,如 /usr/bin/java
  • <名称> 是该链接替换组的主控名,如 java
  • <路径> 是候选项目标文件的位置,如 /home/java/jdk1.8.0_351/bin/java
  • <优先级> 是一个整数,在自动模式下,这个数字越高的选项,其优先级也就越高
# 注意将 /home/java/jdk1.8.0_351/bin/java 修改成你服务器中 jdk 的路径
update-alternatives --install /usr/bin/java java /home/java/jdk1.8.0_351/bin/java 1
# 注意将 /home/java/jdk-11.0.18/bin/java 修改成你服务器中 jdk 的路径
update-alternatives --install /usr/bin/java java /home/java/jdk-11.0.18/bin/java 2

此时不出意外的话,使用 java -version命令后你应该可以看得到 jdk11 版本号的输出了,这是因为它的优先级是 2。

[root@localhost java]# java -version
java version "11.0.18" 2023-01-17 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.18+9-LTS-195)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.18+9-LTS-195, mixed mode)

当我们希望切换到其他版本时也很简单,使用 JDK8 为例:

# 使用方式命令的厂商已经教大家伙了
[root@localhost java]# update-alternatives --config java

共有 2 个提供“java”的程序。

  选项    命令
-----------------------------------------------
   1           /home/java/jdk1.8.0_351/bin/java
*+ 2           /home/java/jdk-11.0.18/bin/java

按 Enter 保留当前选项[+],或者键入选项编号:1

# 验证是否切换成功
[root@localhost java]# java -version
java version "1.8.0_351"
Java(TM) SE Runtime Environment (build 1.8.0_351-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.351-b10, mixed mode)

3、没遇到的坑

在查询管理版本的相关方法时,有看到过其它博主使用官网二进制安装包的方式无法成功切换版本,即设置不生效,但在我这边貌似没这个问题,嘎嘎顺畅,可能是因为我这个时新系统的问题,也有可能其他博主在他们的系统中操作了一些软链或配置导致 `update-alternatives` 命令无法正确设置,目前来看比较简单的解决方式就是使用 `yum install` 等安装命令进行一键安装 JDK。

同时相信大家伙都知道,这种方式配置的是全局的环境配置,对于玩耍或者学习的需求场景下更适合。如果希望在 Linux 系统中部署不同 JDK 版本的项目,相信手动指定 JDK 的路径或使用 Docker 进行环境隔离等方案更能够满足你们的需求。

搞定,猿神,启动!

4、参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈宝子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值