温馨提示×

centos怎样解决java冲突

小樊
54
2026-10-11 15:14:05
栏目: 编程语言

在 CentOS 上“Java 冲突”通常是指系统里装了多个 Java(OpenJDK、Oracle JDK、不同版本),导致 java、javac 命令版本混乱。下面按常见场景给你一套解决办法。


一、先看当前 Java 情况

java -version
which java
ls -l /usr/bin/java

查看已安装 JDK:

rpm -qa | grep -i jdk
rpm -qa | grep -i java

二、使用 alternatives 管理 Java(推荐)

CentOS 用 alternatives 解决多 Java 冲突。

1. 注册 Java 到 alternatives

假设你安装了:

  • /usr/lib/jvm/java-1.8.0-openjdk
  • /usr/java/jdk1.17.0_xx
alternatives --install /usr/bin/java java /usr/lib/jvm/java-1.8.0-openjdk/bin/java 1
alternatives --install /usr/bin/java java /usr/java/jdk-17/bin/java 2

2. 切换 Java 版本

alternatives --config java

按编号选择即可。

3. 同时管理 javac

alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-1.8.0-openjdk/bin/javac 1
alternatives --install /usr/bin/javac javac /usr/java/jdk-17/bin/javac 2

alternatives --config javac

三、用环境变量强制指定(简单粗暴)

如果你只给某个用户或某个服务用:

vi ~/.bashrc

添加:

export JAVA_HOME=/usr/java/jdk-17
export PATH=$JAVA_HOME/bin:$PATH

生效:

source ~/.bashrc

⚠ 只对当前用户/脚本有效,不影响系统命令


四、卸载冲突的 Java(干净彻底)

如果不需要旧版本:

yum remove java-1.7.0-openjdk
yum remove java-1.8.0-openjdk

或 RPM:

rpm -e jdk-xxx

五、Tomcat / Jenkins / 服务冲突

很多服务读的是 JAVA_HOME:

vi /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/jdk-17
export PATH=$JAVA_HOME/bin:$PATH

然后:

source /etc/profile

六、常见坑提醒

✅ java -version 和 javac -version 不一致 → 没管 javac
✅ 系统命令还是旧 Java → 没用 alternatives
✅ Docker / systemd 服务不生效 → 要重启服务


如果你愿意,可以贴一下:

  • java -version
  • rpm -qa | grep jdk
  • 你想用哪个 Java

我可以帮你精确到命令级别处理。

0 踩