在 CentOS 上遇到 Java 编译兼容性问题,通常集中在 JDK 版本不一致、系统自带 OpenJDK、glibc/库版本、字节码版本不匹配 这几类。下面按常见场景给你一套排查和解决思路。
java -version
javac -version
⚠️ 注意:
java 是运行环境javac 是编译器CentOS 常自带:
java-1.8.0-openjdkjava-11-openjdk但 可能没有 javac(只有 JRE)
✅ 解决:安装 JDK 而不是 JRE
yum install -y java-1.8.0-openjdk-devel
# 或
yum install -y java-11-openjdk-devel
UnsupportedClassVersionError
或
major version 52/55/61
alternatives --config java
alternatives --config javac
javac -source 1.8 -target 1.8 xxx.java
Maven 示例:
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
Gradle:
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
JDK 17+ 需要 glibc 2.17+,部分老环境或精简系统不兼容
✅ 推荐方案:
以 JDK 8 为例:
wget https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u382-b05/OpenJDK8U-jdk_x64_linux_hotspot_8u382b05.tar.gz
tar -zxvf OpenJDK8U-jdk_x64_linux_hotspot_8u382b05.tar.gz -C /opt
配置环境变量:
export JAVA_HOME=/opt/jdk8u382-b05
export PATH=$JAVA_HOME/bin:$PATH
mvn -v
如果不是你期望的 JDK:
export JAVA_HOME=/your/jdk/path
javax.xml.bind✅ 解决:
java -version
javac -version
echo $JAVA_HOME
mvn -v # 或 gradle -v
ldd --version
你可以贴出:
我可以直接告诉你该用哪个 JDK、怎么改配置。