在 CentOS 上“Java 版本不对”是非常常见的问题,通常不是系统坏了,而是多个 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/
java -version 和 JAVA_HOME 不一致很多人只改了 JAVA_HOME,但 PATH 没改对。
which java
echo $JAVA_HOME
java -version
常见问题:
JAVA_HOME 指向 JDK 11PATH 里还是 /usr/bin/java(1.8)CentOS 用 alternatives 管理 Java:
sudo alternatives --config java
选错版本就会出现“版本不对”。
查看当前:
alternatives --display java
~/.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
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 没统一
如果你愿意,告诉我:
我可以直接给你一套精确命令。