
spring boot 3.0+ 要求运行时 java 版本 ≥ 17,而 `unsupportedclassversionerror: class file version 61.0` 表明项目用 java 17 编译,却在 java 15 或更低版本上运行,必须统一 jdk 编译与运行环境。
Spring Boot 3.x 系列(包括你使用的 spring-boot-starter-parent:3.0.1)强制要求 Java 17 作为最低运行时版本。错误日志中关键信息:
java.lang.UnsupportedClassVersionError: org/springframework/boot/SpringApplication has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 59.0
对照 Java 版本与 class 文件版本映射关系:
- class file version 59.0 → Java 15
- class file version 61.0 → Java 17
这明确说明:你的 Spring Boot 核心类(如 SpringApplication)是用 Java 17 编译的(对应 Spring Boot 3.0.1),但当前运行环境却是 Java 15(或更低),JVM 拒绝加载高版本字节码,导致启动直接失败。
✅ 正确解决方案(推荐):升级运行环境至 JDK 17+
这是官方支持且长期稳定的方案。只需确保以下三点一致:
- 开发环境 JDK 版本:安装 JDK 17(LTS)或更高版本(如 JDK 21);
- IDE 运行配置:在 IntelliJ IDEA / Eclipse 中设置 Project SDK 和 Run Configuration 的 JRE 为 JDK 17+;
-
Maven 编译配置:保持 pom.xml 中
17 不变(你原本就是正确的!):
17 17 17
⚠️ 注意:仅修改
立即学习“Java免费学习笔记(深入)”;
? 验证步骤:
- 终端执行 java -version,确认输出类似 openjdk version "17.0.1";
- 执行 mvn clean spring-boot:run,观察是否正常启动;
- 若使用 IDE,右键项目 → Maven → Reload,再检查 Project Structure → Project → SDK 是否为 17。
? 额外建议:
- 避免混用旧版库(如 itextpdf:5.5.13 是 Java 7 兼容版,建议升级至 itext7 系列以获得更好兼容性);
- tomcat-embed-jasper 在 Spring Boot 3.x 中需配合 Jakarta EE 9+,若使用 JSP,请确认其与 Spring Boot 3 的兼容性(官方已弱化 JSP 支持,推荐 Thymeleaf);
- 使用 mvn dependency:tree -Dverbose 检查是否存在隐式引入低版本 Java 依赖的第三方包。
总结:版本不匹配不是配置问题,而是环境基础不达标。不要降级 java.version,而应升级 JDK —— 这既是 Spring Boot 3.x 的硬性要求,也是保障项目安全、性能与长期可维护性的最佳实践。










