Spring Boot 3.0.0项目用Java 8运行报UnsupportedClassVersionError求助
解决Spring Boot Jar运行时的UnsupportedClassVersionError问题
核心原因
你遇到的问题本质是Spring Boot版本与本地Java版本不兼容:
- 类文件版本61.0对应Java 17,52.0对应Java 8
- 你的项目依赖的Spring Boot 3.x版本要求最低Java 17,所以它的
JarLauncher类是用Java 17编译的,哪怕你自己的代码已经设置为编译到Java 8,Spring Boot自身的启动类还是高版本编译的,用Java 8运行自然会报错。
解决步骤
- 降级Spring Boot版本到2.x系列:Spring Boot 2.7.x是最后支持Java 8的稳定版本,修改
pom.xml里的spring-boot-starter-parent版本,比如:<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.15</version> <!-- 选择2.7.x的最新稳定版 --> <relativePath/> </parent> - 确认Maven使用的JDK版本:执行
mvn -v检查输出里的Java版本,确保Maven确实用的是AdoptOpenJDK 1.8.0_292,避免Maven偷偷调用了其他高版本JDK编译。 - 清理并重新打包:执行
mvn clean package彻底清理旧的构建产物,重新生成兼容Java 8的Jar包后再运行。
额外验证
运行Jar前可以先检查Jar里JarLauncher的类版本,用命令:
javap -verbose -cp your-app.jar org.springframework.boot.loader.JarLauncher | grep "major version"
如果输出是major version: 52,说明已经兼容Java 8,可以正常运行。
内容的提问来源于stack exchange,提问作者stallion
相关产品推荐
相关产品推荐

