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、参考资料
- Linux安装JDK,并配置多个JDK切换
- Linux上,多个JDK版本如何管理_linux多个jdk如何指定-CSDN博客