目录
前言
在后端开发、服务器部署及运维工作中,Java开发环境是最基础且核心的依赖之一,而JDK作为我们Java程序运行和开发的基石,其版本选择直接影响项目的兼容性、稳定性与功能可用性。随着Java生态的快速迭代,JDK版本不断更新,从经典的JDK 8(长期支持版,仍是目前企业级项目的主流选择),到JDK 11、JDK 17等后续长期支持版本,不同项目往往会因开发框架、依赖组件的差异,对JDK版本提出不同要求------例如部分老旧项目基于Spring Boot 2.x开发,仅适配JDK 8;而新建项目采用Spring Boot 3.x及以上版本,则需依赖JDK 17及更高版本。
在CentOS服务器环境中,若手动安装多个JDK版本,不仅需要繁琐的环境变量配置、路径规划,后续切换版本时还需手动修改系统环境变量(如JAVA_HOME、PATH),操作繁琐且极易出错,一旦配置失误,还可能导致所有依赖JDK的服务无法正常启动,给开发和运维工作带来不必要的麻烦。因此,如何高效、便捷地在CentOS系统中安装多版本JDK,并通过专业工具实现版本的快速切换、统一管理,成为每一位后端开发者和运维人员必备的技能。
查看当前Java版本
bash
[root@localhost ~]# java -version
openjdk version "17.0.18" 2026-01-20 LTS
OpenJDK Runtime Environment (build 17.0.18+10-LTS)
OpenJDK 64-Bit Server VM (build 17.0.18+10-LTS, mixed mode, sharing)
我们通过上面的信息可以看到,目前使用的是jdk17的一个版本,这个版本是我们之前在CentOS7(Linux)从系统安装到环境搭建中安装的版本,我当时使用的是spring提供的jdk17的安装包
下载jdk
因为上次使用的是spring提供的jdk安装包,这次我也同样使用spring提供的安装包,这次下载的是jdk21的版本Liberica JDK
因为我们是CentOS7的系统,所以我们直接下载rpm格式的安装包

我们下载完成安装包之后,使用xftp上传到CentOS中,依旧是上传到之前的/home/package目录下,在之前那篇文章中说过我们创建的/home/package目录是专门存放安装包的目录
被我标记出来的就是我刚刚上传的rpm包

安装jdk
我们先进入/home/package目录,依旧是使用rpm -ivh命令进行安装,和之前安装jdk17的时候一样
bash
cd /home/package
rpm -ivh bellsoft-jdk21.0.10+10-linux-amd64.rpm
运行完jdk21的版本就已经安装好了

这里会直接将版本切换到刚刚安装的jdk21版本,我们再查看以下当前版本

现在是jdk21的版本,可能有人会说,前面安装的时候提示正在升级/安装是不是把jdk17的版本给覆盖掉了,我们现在查看以下安装的jdk版本以及jdk安装的目录在哪里
bash
rpm -qa | grep java

这里出来有三个,第一个是python的Java包这个不用管,在CentOS环境搭建的时候就说过,我们现在只看下面两个,一个是刚刚安装的jdk21,一个是原有的jdk17,现在我们版本也知道了,我们去查看一下jdk到底安装在哪个目录下
bash
rpm -ql bellsoft-java17-17.0.18.0.0.10-1.x86_64

运行之后我们会看到很多信息,第一条就是jdk17的安装目录,我们直接cd过去,然后回到上一级目录,使用ll或者ls命令查看当前文件夹有哪些东西
bash
cd /usr/lib/jvm/bellsoft-java17.x86_64
cd ..
ll

这里我们总共就看到有两个目录也就是我们的两个jdk版本
切换jdk版本
这里可能其他的博主会教大家去修改环境变量的一个文件vim /etc/profile,但是我这里教其他的方法,不通过环境变量文件去进行切换,使用alternatives进行软链接的方式来进行切换
bash
alternatives --install /usr/bin/java java /usr/lib/jvm/bellsoft-java17.x86_64/bin/java 1
alternatives --install /usr/bin/java java /usr/lib/jvm/bellsoft-java21.x86_64/bin/java 2
现在我们已经将两个jdk版本就已经链接好了,最后一个参数1和2是我们在进行切换jdk的时候使用的,我们输入以下命令进行切换
bash
alternatives --config java

这里我们输入1或者2,进行对应的jdk版本切换
然后我们再来查看当前的jdk版本

我们来查看一下javac的版本

会发现Javac的版本和jdk的版本对应不上,这是因为我们只切换了jdk的版本,没有切换javac的版本,同样切换javac的版本和切换jdk的方式是一样的
bash
alternatives --config javac
切换jdk的时候最后一个参数是java,切换Javac的时候最后一个参数是javac,出来的效果和切换jdk的时候是一样的,用法也是一样的

配置简洁命令切换
bash
vim /usr/local/bin/java-cut
bash
#!/bin/bash
alternatives --config java
alternatives --config javac
这个脚本可以在全局使用,使用方式就是直接输入java-cut就会自动执行两条切换的命令
但是这里要给这个java-cut文件给一个权限,不然会提示权限不够
bash
chmod +x /usr/local/bin/java-cut

总结
通过本文的实操方法,可轻松实现CentOS系统下多版本JDK的高效管理,无需再手动修改环境变量,大幅提升开发与运维效率,同时规避了环境配置失误带来的服务异常风险,为后续Java项目的稳定开发、部署与运行筑牢了基础。后续若需新增JDK版本或调整版本优先级,可参考本文相关步骤,快速完成配置与切换。
