在 CentOS 上编译 Java 程序时遇到“版本不兼容”,通常是因为 JDK 版本、编译参数、运行环境不一致。下面按常见情况给你一套排查和解决思路。
Unsupported major.minor versionclass file version XX.0, this version of the Java Runtime only recognizes ...source release 11 requires target platform 11javac: invalid source releasejava -version
javac -version
⚠️ 注意:
java 是运行环境javac 是编译环境ls /usr/lib/jvm/
或
alternatives --config java
alternatives --config javac
报错示例
Unsupported major.minor version 55.0
原因
解决办法(任选一种)
javac -source 1.8 -target 1.8 Hello.java
如果是 Maven:
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
yum install java-11-openjdk
CentOS 7 默认可能是:
java-1.8.0-openjdk
升级 JDK
yum install java-11-openjdk-devel
切换默认版本:
alternatives --config java
alternatives --config javac
查看 Maven 用的 JDK:
mvn -v
如果不对,设置:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
或在 pom.xml 指定:
<properties>
<java.version>11</java.version>
</properties>
现象
解决办法
echo "java:"; java -version
echo "javac:"; javac -version
echo "JAVA_HOME=$JAVA_HOME"
编译版本 ≤ 运行版本,且 JDK / JRE 版本要对应
如果你愿意,可以把:
发出来,我可以直接帮你定位到具体命令。