在CentOS系统中查看Java版本是日常开发和运维工作中常见的操作,尤其当系统安装了多个Java版本或需要确认当前Java环境时,掌握正确的命令至关重要,以下是几种常用的查看Java版本的方法,涵盖不同场景和工具,帮助您全面了解系统中的Java版本信息。

使用java -version命令查看当前默认Java版本
这是最基础也是最常用的方法,通过Java自带的命令行工具直接输出当前使用的Java版本信息,打开终端,输入以下命令:
java -version
执行后,系统会返回类似以下的信息:
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)
openjdk version后面的数字即为Java版本号(如1.8.0_312),对应Java 8,如果系统中未安装Java或未配置环境变量,命令会提示“bash: java: command not found”,需要注意的是,该命令仅显示通过JAVA_HOME或系统路径优先调用的Java版本,若存在多个Java版本,可能需要结合其他命令进一步确认。
使用javac -version查看Java编译器版本
Java编译器(javac)的版本通常与Java运行时环境(JRE)版本一致,因此可以通过该命令间接验证Java版本,命令如下:

javac -version
输出示例:
javac 1.8.0_312
如果java -version和javac -version显示的版本不一致,可能表明系统环境配置存在问题,例如JAVA_HOME指向错误或路径冲突。
检查JAVA_HOME环境变量
JAVA_HOME是Java运行时依赖的核心环境变量,明确其指向的路径有助于确认当前Java版本,通过以下命令查看:
echo $JAVA_HOME
输出结果通常为Java安装的根目录,如/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-0.el7_9.x86_64,若未设置JAVA_HOME,命令可能返回空值,可以结合ls -l命令查看该路径下的版本信息:

ls -l $JAVA_HOME/bin/java
输出会显示Java可执行文件的符号链接或实际文件,通过链接目标可进一步确认版本。
使用update-alternatives管理多版本Java(适用于基于RPM的系统)
CentOS系统通常使用update-alternatives工具管理多版本软件的切换,若Java通过该工具安装,可通过以下命令查看所有已配置的Java版本:
update-alternatives --display java
输出示例:
java - 自动模式
最佳版本 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-0.el7_9.x86_64/jre/bin/java
候选项 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-0.el7_9.x86_64/jre/bin/java
优先级 1800
候选项 /usr/lib/jvm/java-11-openjdk-11.0.13.0.8-0.el7_9.x86_64/bin/java
优先级 1100
“最佳版本”即为当前系统默认使用的Java版本,若需切换版本,可使用:
sudo update-alternatives --config java
然后根据提示选择所需的Java版本。
查看/usr/bin/java的符号链接
在CentOS中,/usr/bin/java是Java命令的默认入口,通常指向实际安装的Java路径,通过以下命令查看:
ls -l /usr/bin/java
输出示例:
lrwxrwxrwx 1 root root 47 10月 26 15:30 /usr/bin/java -> /etc/alternatives/java
而/etc/alternatives/java又会通过update-alternatives指向具体的Java版本,因此该命令可间接确认当前Java版本。
使用which java定位Java可执行文件路径
which命令用于显示命令的完整路径,适用于快速定位Java安装位置:
which java
输出通常为/usr/bin/java或/usr/local/bin/java等,结合ls -l可进一步查看版本信息。
通过rpm或yum查询已安装的Java RPM包
若Java通过RPM包安装,可使用rpm或yum查询已安装的Java相关包:
rpm -qa | grep java
输出示例:
java-1.8.0-openjdk-1.8.0.312.b07-0.el7_9.x86_64
java-11-openjdk-11.0.13.0.8-0.el7_9.x86_64
tzdata-java-2021e-1.el7.noarch
通过包名可明确已安装的Java版本,若需查看特定包的详细信息,可使用:
rpm -qi java-1.8.0-openjdk-1.8.0.312.b07-0.el7_9.x86_64
使用ls命令直接查看Java安装目录
若已知Java安装路径(如/usr/lib/jvm),可直接列出该目录下的文件夹:
ls /usr/lib/jvm
输出会显示所有已安装的Java版本,如java-1.8.0-openjdk、java-11-openjdk等。
结合awk或grep提取版本信息
在脚本化操作中,可能需要提取Java版本号的核心部分,可通过管道结合文本处理工具实现:
java -version 2>&1 | awk -F '"' '/version/ {print $2}'
输出仅为版本号,如8.0_312。
常见Java版本对照表
为了更直观地理解版本号与Java版本的对应关系,以下是部分常见Java版本的对照表:
| 版本号 | Java正式名称 | 发布时间 | 主要特性 |
|---|---|---|---|
| 8.0_xxx | Java 8 | 2014年 | Lambda表达式、Stream API、默认方法 |
| 0.x | Java 11 | 2018年 | 模块化系统、HTTP客户端、ZGC垃圾回收器 |
| 0.x | Java 17 | 2021年 | Sealed Classes、Record、Pattern Matching |
| 0.x | Java 21 | 2023年 | Virtual Threads、Sequenced Collections |
相关问答FAQs
问题1:为什么java -version显示的版本与JAVA_HOME指向的版本不一致?
解答:这种情况通常由环境变量配置错误或路径冲突导致,可能的原因包括:
JAVA_HOME未正确设置或指向了错误的Java路径;- 系统的
PATH变量中存在优先级更高的Java路径,覆盖了JAVA_HOME的设置; - 多个Java版本共存且
update-alternatives未正确配置。
解决方法:检查JAVA_HOME和PATH变量,确保两者指向同一Java版本;使用update-alternatives --config java统一管理版本。
问题2:如何在CentOS中安装多个Java版本并切换?
解答:在CentOS中可通过以下步骤实现多版本Java的安装与切换:
- 安装多个Java版本:使用
yum或dnf安装不同版本的Java,sudo yum install java-1.8.0-openjdk java-11-openjdk
- 配置
update-alternatives:为每个Java版本注册 alternatives:sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-1.8.0-openjdk/jre/bin/java 1800 sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-11-openjdk/bin/java 1100
(数字为优先级,数值越大优先级越高)
- 切换版本:执行
sudo update-alternatives --config java,根据提示选择所需版本。 - 验证:通过
java -version确认当前版本。
通过以上方法,可灵活管理CentOS系统中的Java版本,满足不同开发环境的需求。
