使用Java 17与Spring Boot 2.2.4时遇Unsupported class file major version 61错误
为什么会出现Unsupported class file major version 61错误
错误本身说明
Unsupported class file major version 61 意思是当前程序运行环境没法识别Java 17编译出来的类文件——Java版本对应的class文件主版本号里,61就是Java 17的标识。
核心原因:Spring Boot 2.2.4不支持Java 17
Spring Boot 2.2.x系列官方只支持Java 8和Java 11,完全不兼容Java 17。你用Java 17编译代码后,Spring Boot 2.2.4底层依赖的旧版类库(比如Spring Framework 5.2.x)根本处理不了Java 17的类文件格式,直接就抛出这个错误了。
验证依据
- Spring Boot 2.2.4.RELEASE的官方文档明确写了支持的Java版本范围是8到11,没包含17。
- 你项目里的
spring-boot-starter依赖的Spring Framework是5.2.3.RELEASE,这个版本同样只认Java 8和11的类文件。
解决办法(必须用Spring Boot 2.2.4的前提下)
只能降级Java版本:
- 换成Java 8或者Java 11,这两个是Spring Boot 2.2.4官方支持的版本,能完美适配。
- 要是非要用Java 17,那就得升级Spring Boot到支持Java 17的版本(比如2.6及以上或者3.x),但这不符合你必须用2.2.4的要求,所以这条路走不通。
额外要做的调整
- 改完Java版本后,记得把
build.gradle里的sourceCompatibility和targetCompatibility改成对应版本(比如'11'或者'8')。 - 确认本地的
JAVA_HOME、系统PATH都指向降级后的Java版本,防止Gradle用错JDK编译。
内容的提问来源于stack exchange,提问作者hhrzc
相关产品推荐
相关产品推荐

