CentOS如何安装多个JDK并设置系统默认版本?

在CentOS系统中,管理多个Java开发工具包(JDK)版本是一项常见且重要的任务,不同的应用程序或项目可能依赖于特定的JDK版本,能够干净、高效地在不同版本之间切换至关重要,本文将详细介绍如何在CentOS上安装、配置并切换JDK版本,确保系统环境的整洁与稳定。

CentOS如何安装多个JDK并设置系统默认版本?

准备工作:检查当前环境

在进行任何更改之前,首先需要了解当前系统的JDK安装情况,打开终端,执行以下命令:

java -version

此命令会显示当前系统默认使用的JDK版本信息,如果尚未安装JDK,系统会提示命令未找到,检查已通过yumdnf安装的Java相关软件包:

yum list installed | grep java

这将列出所有已安装的、名称中包含“java”的软件包,帮助你了解现有的Java环境。

安装新的JDK版本

CentOS提供了通过其软件包管理器yum(或在较新版本中为dnf)安装OpenJDK的便捷方式,OpenJDK是Java平台的开源实现,足以满足绝大多数开发和生产环境的需求。

以安装OpenJDK 11为例,执行以下命令:

sudo yum install java-11-openjdk java-11-openjdk-devel

这里,java-11-openjdk包包含了Java运行时环境(JRE),而java-11-openjdk-devel则包含了编译器和开发工具(JDK),对于开发工作来说,两者都是必需的,你可以将11替换为其他需要的版本号,如817等,前提是CentOS的软件仓库中提供了该版本。

使用alternatives管理多版本

CentOS提供了一个名为alternatives的强大工具,用于管理同一个软件的多个版本,它能自动创建和维护符号链接,让用户可以轻松地在不同版本间切换,而无需手动修改环境变量。

注册JDK到alternatives系统

通过yum安装的JDK会自动注册到alternatives中,但如果你是手动安装的(从Oracle官网下载tar.gz包解压),则需要手动注册,假设你将JDK 17解压到了/usr/lib/jvm/jdk-17目录下,注册命令如下:

CentOS如何安装多个JDK并设置系统默认版本?

sudo alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-17/bin/java 2 
 --slave /usr/bin/javac javac /usr/lib/jvm/jdk-17/bin/javac 
 --slave /usr/bin/jar jar /usr/lib/jvm/jdk-17/bin/jar
  • --install:告诉alternatives我们要安装一个新的选项。
  • /usr/bin/java:公共链接的路径。
  • java:这个链接所属的“家族”名称。
  • /usr/lib/jvm/jdk-17/bin/java:这个选项的实际程序路径。
  • 2:优先级,数字越大,优先级越高,在自动选择时,优先级高的版本会被默认使用。
  • --slave:指定与主程序关联的从属程序,如javacjar等,确保切换主程序时,这些工具也一并切换。

配置并切换JDK版本

一旦所有JDK版本都已注册到alternatives系统,就可以使用以下命令进行交互式切换:

sudo alternatives --config java

执行后,系统会列出所有已注册的Java版本,并要求你输入对应的数字来选择默认版本。

共有 3 个程序提供“java”。
  选择    命令
-----------------------------------------------
*+ 1           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64/jre/bin/java)
   2           java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.20.0.8-2.el7.x86_64/bin/java)
   3           /usr/lib/jvm/jdk-17/bin/java
按 Enter 来保存当前选择[+],或键入选择的数字:

输入你希望切换到的版本前的数字,然后按回车键即可,标记表示当前正在使用的版本。

配置JAVA_HOME环境变量

仅仅切换java命令的链接是不够的,许多Java应用程序和构建工具(如Maven、Tomcat)依赖于JAVA_HOME环境变量来找到JDK的安装目录。

一个最佳实践是,将JAVA_HOME动态设置为alternatives当前指向的JDK路径,这样,每次使用alternatives切换版本后,JAVA_HOME也会自动指向正确的位置。

创建一个新的环境变量配置文件:

sudo vi /etc/profile.d/java.sh

在文件中添加以下内容:

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

保存并退出编辑器,让配置立即生效:

CentOS如何安装多个JDK并设置系统默认版本?

source /etc/profile.d/java.sh

或者,你也可以重新登录系统,无论何时使用alternatives切换JDK版本,JAVA_HOME都会自动更新,你可以通过echo $JAVA_HOME来验证。

验证最终结果

完成所有步骤后,再次执行验证命令,确保所有配置都已生效:

java -version
javac -version
echo $JAVA_HOME

这三个命令的输出应该一致,都指向你刚刚选择的新JDK版本,至此,你已经在CentOS上成功、干净地完成了JDK版本的切换。


相关问答FAQs

问题1:我执行了 alternatives --config java,但是没有看到我新安装的JDK选项,怎么办?

解答: 这种情况通常意味着你新安装的JDK版本没有被正确地注册到alternatives系统中,如果你是通过yum安装的,请检查安装过程是否成功完成,如果你是手动下载并解压安装的JDK,那么你必须手动执行alternatives --install命令将其注册,请参考上文“注册JDK到alternatives系统”部分,确保命令路径和参数正确无误,注册成功后,再次运行alternatives --config java,新版本就会出现在选项列表中。

问题2:更改了JDK版本后,为什么 echo $JAVA_HOME 显示的还是旧路径?

解答: 这是因为你的Shell会话在启动时加载了环境变量配置,在你更改alternatives配置后,当前已打开的终端窗口中的环境变量并未自动更新,要解决这个问题,你有两个选择:一是关闭当前终端并重新打开一个新的,或者直接注销后重新登录系统;二是手动重新加载环境变量配置文件,例如执行 source /etc/profile.d/java.sh(如果你按照本文推荐的方式设置了JAVA_HOME),如果你是直接在~/.bashrc/etc/profile中设置的静态路径,那么每次切换JDK版本后,你都需要手动去修改这个路径,这也是为什么推荐使用动态JAVA_HOME设置的原因。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-08 08:43
下一篇 2025-10-08 08:46

相关推荐

  • CentOS安装dz过程中遇到哪些常见问题及解决方法?

    CentOS简介CentOS(Community Enterprise Operating System)是一个基于Red Hat Enterprise Linux的企业级操作系统,由一群志愿者组成的开源社区维护,CentOS以稳定性、安全性和可定制性著称,是许多企业和开发者的首选操作系统,DZ简介DZ(Dis……

    2026-01-23
    003
  • 服务器如何检测客户端的连接状态并识别自身的固件版本?

    服务器通过监听客户端发送的心跳包或定期发送的保持活动消息来判断其连接状态。判断服务器固件类型通常涉及检查系统信息、使用特定命令如uname a(Linux)或查阅硬件文档。

    2024-07-27
    007
  • centos start sshd

    CentOS作为一个广泛使用的Linux发行版,其SSH服务(sshd)的配置与管理是系统管理员日常工作中不可或缺的一部分,SSH(Secure Shell)协议为远程登录、文件传输等操作提供了安全加密的通道,确保数据传输的机密性和完整性,本文将详细介绍在CentOS系统中如何启动、配置和管理sshd服务,涵盖……

    2026-01-01
    005
  • CentOS mini安装后如何配置自动联想功能?

    在CentOS系统的安装与部署过程中,Mini版本的凭借其轻量级、高效率的特点,成为许多服务器管理员和开发者的首选,与完整版不同,CentOS Mini版仅包含核心组件,用户可根据实际需求手动安装必要的软件包,从而减少系统资源占用,提升运行效率,对于习惯了图形化操作的用户而言,Mini版的无界面安装和配置过程可……

    2025-12-10
    005

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信