温馨提示×

centos编译java版本冲突咋办

小樊
35
2026-09-03 06:37:33
栏目: 编程语言

在 CentOS 上编译 Java 时遇到版本冲突(比如系统自带 OpenJDK、自己装的 JDK、maven/gradle 用的版本不一致),一般可以按下面思路解决。


一、先确认“到底有哪些 Java”

which java
which javac
java -version
javac -version

再看系统里装了哪些 JDK:

rpm -qa | grep -i jdk
ls /usr/lib/jvm/

常见情况:

  • 系统自带 java-1.8.0-openjdk
  • 你自己装了 jdk-11jdk-17
  • JAVA_HOME 指错了

二、用 alternatives 管理 Java 版本(推荐)

CentOS 一般用 alternatives 管理多版本:

sudo alternatives --config java
sudo alternatives --config javac

按提示选你要的版本。

设置 JAVA_HOME(很重要):

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

建议写进:

~/.bashrc

/etc/profile.d/java.sh

三、编译工具(Maven / Gradle)版本冲突

Maven

mvn -version

如果 Maven 用的 Java 不对:

export JAVA_HOME=/your/jdk/path
mvn clean package

或在 pom.xml 里指定:

<properties>
  <maven.compiler.source>11</maven.compiler.source>
  <maven.compiler.target>11</maven.compiler.target>
</properties>

Gradle

gradle -version

指定 JVM:

export JAVA_HOME=/your/jdk/path

或在 gradle.properties

org.gradle.java.home=/your/jdk/path

四、最常见坑总结

javac 和 java 版本不一致

  • java -versionjavac -version
  • alternatives 统一

JAVA_HOME 没设或设错

  • 编译前一定 echo $JAVA_HOME

yum 装的 openjdk 不完整

  • 编译要装 devel 包:
sudo yum install java-11-openjdk-devel

旧项目用 JDK8,新项目用 JDK17

  • 不要全局改,项目级指定 JAVA_HOME

五、最小安全做法(推荐)

# 编译前
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$JAVA_HOME/bin:$PATH

java -version
javac -version

# 再编译
mvn clean package

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

  • java -version
  • javac -version
  • 报错信息

我可以直接帮你定位是哪一种冲突。

0