在 CentOS 上遇到 Java 编译兼容性问题,通常集中在 JDK 版本不一致、系统自带 OpenJDK、编译参数不兼容 这几类。下面按常见场景给你一套排查和解决思路。
java -version
javac -version
which java
which javac
常见问题:
java 是 1.8,但 javac 是 11现象
UnsupportedClassVersionError解决 统一 JDK 版本:
# 查看已安装 JDK
rpm -qa | grep jdk
# 或
ls /usr/lib/jvm/
安装指定版本(以 JDK 8 为例):
yum install java-1.8.0-openjdk-devel
切换默认 JDK:
alternatives --config java
alternatives --config javac
✅ 建议:
即使系统 java 是对的,Maven 可能用的是别的。
mvn -version
如果 JDK 不对:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH
或在 pom.xml 指定:
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
例如:
var(Java 10+)switch 表达式(Java 14+)解决
CentOS 6 / 老 7:
错误示例
version 'GLIBC_2.17' not found
解决
javac -encoding UTF-8 *.java
Maven:
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
java 和 javac 版本一致JAVA_HOME 设置正确你可以贴一下:
cat /etc/redhat-release)java -version 和 javac -version我可以直接告诉你 该装哪个 JDK、怎么改配置。