Gradle项目运行报java.lang.UnsupportedClassVersionError如何解决
问题原因
报错信息已经明确指出根因:你的代码是用Java 16编译的(对应类文件版本号60.0),但控制台运行程序时调用的是Java 8(仅支持最高52.0版本的类文件),低版本JRE无法兼容高版本JDK编译出的类文件。
IntelliJ IDEA运行正常是因为IDE内部单独配置了项目对应的JDK 16作为运行环境,不依赖系统全局的环境变量配置,因此不会出现版本不匹配问题。
解决方案
提供两种可选方案,按需选择即可:
方案1:统一控制台运行环境为Java 16
如果你不需要兼容低版本Java运行,直接修改系统全局Java版本即可:
- 首先执行命令验证当前控制台Java版本:
若输出版本为1.8.x即可确认是环境变量配置问题。java -version javac -version - 将系统环境变量
JAVA_HOME的值修改为你本地JDK 16的安装路径 - 编辑系统
Path变量,将%JAVA_HOME%\bin(Windows系统)或$JAVA_HOME/bin(Linux/macOS系统)移动到最靠前的位置,避免优先匹配到其他版本的Java - 重启控制台后重新执行版本验证命令,确认输出为Java 16后,再运行程序即可正常启动
方案2:兼容Java 8运行,修改Gradle配置
如果你需要打包后的程序可以在Java 8环境下运行,修改build.gradle配置即可:
- 找到配置中以下两行:
替换为:sourceCompatibility = JavaVersion.VERSION_16 targetCompatibility = JavaVersion.VERSION_16sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 - 执行命令清理旧的编译缓存并重新构建:
# Linux/macOS ./gradlew clean build # Windows gradlew.bat clean build - 重新构建后的产物即可在Java 8及以上版本的环境中运行
注意:修改配置后如果仍报错,优先确认是否没有执行clean操作,残留了旧版本编译的类文件
内容的提问来源于stack exchange,提问作者Vitalii Smahlenko
相关产品推荐
相关产品推荐

