Gradle bootJar任务报Unsupported class file major version 61如何解决
报错根因
Unsupported class file major version 61 是字节码版本不匹配错误,版本号61对应Java 17,触发该报错的核心原因有两个:
- 执行Gradle构建的守护进程运行环境不是Java 17,你配置的
sourceCompatibility/targetCompatibility、IDEA项目SDK仅控制项目代码的编译目标版本,不会决定Gradle进程本身的运行JDK - 项目引入的Spring Boot Gradle插件版本过低,低版本插件无法解析Java 17编译生成的字节码,因此在读取
mainClassName属性时直接抛出异常
修复步骤
- 校准Gradle运行时JDK
打开IDEA设置中Build, Execution, Deployment > Build Tools > Gradle页面,找到Gradle JVM配置项,手动明确指定本地安装的JDK 17路径,不要使用默认的项目SDK选项。配置完成后执行./gradlew --stop终止所有旧的Gradle守护进程,确保下次构建使用新配置的JDK启动。
如果使用命令行构建,直接检查系统JAVA_HOME环境变量是否指向JDK 17安装目录,执行java -version确认输出版本为17即可。 - 升级Spring Boot Gradle插件版本
Gradle 7.4本身已支持Java 17,但Spring Boot 2.5.5以下版本的Gradle插件不兼容Java 17字节码,你可以将插件升级到2.7.x稳定版(如果要升级到Spring Boot 3.x系列,需要同步把Gradle wrapper升级到7.5及以上版本),根目录build.gradle的插件配置参考:plugins { id 'org.springframework.boot' version '2.7.18' id 'io.spring.dependency-management' version '1.0.15.RELEASE' id 'java' } - 清理缓存后重新构建
执行以下命令清理旧构建产物和依赖缓存:./gradlew clean ./gradlew bootJar
构建前可以执行./gradlew -version确认输出的JVM信息为17版本,避免配置不生效。
内容的提问来源于stack exchange,提问作者Iulii Turkin
相关产品推荐
相关产品推荐

