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

相关推荐

  • 房地产项目网站建设方案_创建设备

    房地产项目网站方案:打造用户友好界面,展示楼盘信息;集成vr看房增强体验;后台管理更新内容;保障数据安全。

    2024-07-19
    005
  • 如何正确设置Flash网站源文件的编码格式?

    在处理Flash网站源文件时,需要确保正确设置编码,以避免出现乱码或错误。通常推荐使用UTF8编码,因为这种编码支持多种语言字符,且兼容性好。在编辑软件如Flash Builder或Flash Professional中,可以在保存或导出文件时选择编码格式。正确的编码设置有助于保证网站在不同浏览器和操作系统上正常显示。

    2024-07-31
    007
  • 网易云centos版是干嘛用的?值得安装体验吗?

    在Linux服务器的世界里,一切以效率和稳定为首要目标,对于许多开发者、系统管理员以及长期在终端环境中工作的用户而言,长时间面对单调的字符界面不免会感到枯燥,正是在这种需求下,一个充满极客精神的解决方案应运而生——社区开发者创造的“网易云CentOS版”,需要明确的是,这并非网易云音乐官方发布的Linux客户端……

    2025-10-08
    001
  • 服务网站备案_网站备案

    网站备案是指将网站的基本信息如域名、主办单位等在国家有关部门进行登记,以获得合法运营资格的过程。这通常由工信部门负责监管。

    2024-07-24
    005

发表回复

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

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

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

关注微信