← 中文资源

简体中文版本

Java 报 UnsupportedClassVersionError: 由更高版本编译

通过让编译器的 release 目标与运行时 JDK 对齐,修复 UnsupportedClassVersionError。

阅读英文原文

症状

启动应用失败并报 UnsupportedClassVersionError,消息给出 class 文件版本与运行时支持的上限,如 61.0 对 55.0。代码用比运行环境更新的 JDK 编译。这常在升级构建环境而部署运行时仍为旧版本后出现。

诊断

读取消息中的两个版本号;检查构建的 release 目标;对比运行与构建 JDK 版本。

App 2>&1 | grep UnsupportedClassVersion

根因

class 文件为高于运行时 JDK 支持的版本编译,运行时拒绝加载。

修复

把编译 release 目标设为部署 JDK 版本,并用该目标构建,适用时使用 –release 以产出兼容字节码。若依赖确实需要更新 Java,应升级运行时而非强行不兼容构建。

验证

重跑应用确认启动,并确认 class 版本不再超过运行时上限。版本对齐即证明修复。

常见陷阱

仅在本机安装新 JDK 而不宣布最低版本要求,会让部署环境继续失败;应在构建配置中明确目标。