温馨提示×

centos为啥java版本不对

小樊
60
2026-10-08 16:10:45
栏目: 编程语言

在 CentOS 上“Java 版本不对”是非常常见的问题,通常不是系统坏了,而是多个 Java 共存 + 环境变量没生效导致的。下面按最常见原因给你梳理一下。


一、最常见原因

1️⃣ 系统装了多个 Java

CentOS 常自带 OpenJDK,比如:

  • /usr/lib/jvm/java-1.8.0-openjdk
  • /usr/lib/jvm/java-11-openjdk

你以为用的是 JDK 11,但实际还是 1.8。

ls /usr/lib/jvm/

2️⃣ java -version 和 JAVA_HOME 不一致

很多人只改了 JAVA_HOME,但 PATH 没改对。

which java
echo $JAVA_HOME
java -version

常见问题:

  • JAVA_HOME 指向 JDK 11
  • 但 PATH 里还是 /usr/bin/java(1.8)

3️⃣ alternatives 没切换(CentOS 特有)

CentOS 用 alternatives 管理 Java:

sudo alternatives --config java

选错版本就会出现“版本不对”。

查看当前:

alternatives --display java

4️⃣ 环境变量写错位置

  • 写在 ~/.bashrc,但用的是 非交互 shell(如 cron、service)
  • 或写在了 /etc/profile,但没 source

正确做法(示例):

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$JAVA_HOME/bin:$PATH

然后:

source /etc/profile

5️⃣ 服务(如 tomcat / systemd)没读到环境变量

systemd 启动的服务不会读 .bashrc!

需要:

sudo systemctl edit tomcat

加:

[Service]
Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk

二、快速排查命令(建议直接贴结果)

你可以依次执行并贴出来,我可以直接帮你判断:

which java
java -version
echo $JAVA_HOME
echo $PATH
ls /usr/lib/jvm/
sudo alternatives --config java

三、一句话总结

CentOS Java 版本不对 = 多版本 + PATH/alternatives/JAVA_HOME 没统一

如果你愿意,告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • 想要哪个 Java 版本
  • 是命令行不对,还是某个服务不对

我可以直接给你一套精确命令。

0 踩