02.Linux下安装和切换不同版本的JDK(通过 alternatives )
简介
本篇文章将介绍在线和通过 alternatives 离线安装openjdk,以及切换合适版本的jdk。
通过 alternatives 有利于对所有注册的jdk版本进行统一管理。
操作演示环境为CentOS系统,其他操作系统例如openEuler也可作为参考。
操作系统版本如下
名称 | 版本 |
---|---|
CentOS | 7.6+ |
1.1 在线安装
搜索yum源库中的openjdk
[root@k8s-node02 ~]# yum search openjdk
已加载插件:fastestmirror, langpacks
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Determining fastest mirrors
* elrepo: mirrors.tuna.tsinghua.edu.cn
===================================================================== N/S matched: openjdk =====================================================================
java-1.6.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.6.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.6.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.6.0-openjdk-javadoc.x86_64 : OpenJDK API Documentation
java-1.6.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.7.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.7.0-openjdk-accessibility.x86_64 : OpenJDK accessibility connector
java-1.7.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.7.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.7.0-openjdk-headless.x86_64 : The OpenJDK runtime environment without
选择要使用的版本安装
[root@k8s-node02 ~]# yum install java-1.8.0-openjdk
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* elrepo: mirrors.tuna.tsinghua.edu.cn
base | 3.6 kB 00:00:00
docker-ce-stable | 3.5 kB 00:00:00
elrepo | 3.0 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/4): docker-ce-stable/7/x86_64/primary_db | 116 kB 00:00:00
(2/4): extras/7/x86_64/primary_db | 250 kB 00:00:00
(3/4): updates/7/x86_64/primary_db | 22 MB 00:00:11
(4/4): elrepo/x86_64/primary_db | 350 kB 00:00:18
正在解决依赖关系
--> 正在检查事务
检查是否安装成功
[root@node03 ~]# java -version
openjdk version "1.8.0_222"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_222-b10)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.222-b10, mixed mode)
[root@node03 ~]#
1.2 离线安装
下载离线包
解压JDK
下载后上传到服务器,解压至 /usr/lib/jvm/ 目录
[root@k8s-node02 ~]# tar -xzvf jdk-20_linux-x64_bin.tar.gz -C /usr/lib/jvm
jdk-20.0.2/LICENSE
jdk-20.0.2/README
jdk-20.0.2/bin/jar
jdk-20.0.2/bin/jarsigner
jdk-20.0.2/bin/java
查看目录 /usr/lib/jvm/jdk-20.0.2/bin
将 JDK 注册到 alternatives 中
查看已经安装的jdk(按回车退出命令,保留当前版本)
[root@k8s-node02 ~]# alternatives --config java
共有 3 个提供“java”的程序。
选项 命令
-----------------------------------------------
1 java-1.7.0-openjdk.x86_64 (/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64/jre/bin/java)
*+ 2 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64/jre/bin/java)
3 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.19.0.7-1.el7_9.x86_64/bin/java)
按 Enter 保留当前选项[+],或者键入选项编号:^Z
因为已经有了3个版本,所以这里最后的序号我们填4
[root@k8s-node02 ~]# update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-20.0.2/bin/java 4
[root@k8s-node02 ~]# update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-20.0.2/bin/javac 4
再次查看,jdk20已经注册安装好(按回车退出命令),但是目前服务器jdk还是使用的jdk1.8,还没有切换到jdk20
[root@k8s-node02 ~]# alternatives --config java
共有 4 个提供“java”的程序。
选项 命令
-----------------------------------------------
1 java-1.7.0-openjdk.x86_64 (/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64/jre/bin/java)
*+ 2 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64/jre/bin/java)
3 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.19.0.7-1.el7_9.x86_64/bin/java)
4 /usr/lib/jvm/jdk-20.0.2/bin/java
按 Enter 保留当前选项[+],或者键入选项编号:
1.3 通过 alternatives 管理 JDK 版本
以切换jdk20为例
切换java
通过切换命令展示的版本列表,键入选项编号输入4
[root@k8s-node02 ~]# update-alternatives --config java
共有 4 个提供“java”的程序。
选项 命令
-----------------------------------------------
1 java-1.7.0-openjdk.x86_64 (/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64/jre/bin/java)
*+ 2 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64/jre/bin/java)
3 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.19.0.7-1.el7_9.x86_64/bin/java)
4 /usr/lib/jvm/jdk-20.0.2/bin/java
按 Enter 保留当前选项[+],或者键入选项编号:4
[root@k8s-node02 ~]# java -version
java version "20.0.2" 2023-07-18
Java(TM) SE Runtime Environment (build 20.0.2+9-78)
Java HotSpot(TM) 64-Bit Server VM (build 20.0.2+9-78, mixed mode, sharing)
切换javac
通过切换命令展示的版本列表,键入选项编号输入2(因为有几个版本没有install javac 所以我们1.2步骤中虽然指定编号为4,但仍然默认排序为2)
[root@k8s-node02 ~]# update-alternatives --config javac
共有 2 个提供“javac”的程序。
选项 命令
-----------------------------------------------
1 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.19.0.7-1.el7_9.x86_64/bin/javac)
*+ 2 /usr/lib/jvm/jdk-20.0.2/bin/javac
按 Enter 保留当前选项[+],或者键入选项编号:2
至此版本切换完成
如果想切换为其他版本,再次使用上述两个命令,输入对应的编号切换即可