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 离线安装

下载离线包

Oracle官网下载JDK

在这里插入图片描述

解压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

至此版本切换完成
如果想切换为其他版本,再次使用上述两个命令,输入对应的编号切换即可

猜你喜欢

转载自blog.csdn.net/ChennyWJS/article/details/131979094