
本文详解 `buildinfomojo` 类文件版本不兼容错误(如“compiled by a more recent version of the java runtime”),明确 spring boot 2.6+ 要求 jdk 17+,而 jdk 8 仅支持至 spring boot 2.5.x,提供精准的降级配置方案与 pom.xml 实操示例。
该错误本质是Java 字节码版本不兼容:org.springframework.boot.maven.BuildInfoMojo 类文件版本为 61.0(对应 Java 17),而您当前运行的 Maven 使用的是 JDK 8(仅支持最高 class 文件版本 52.0)。虽然您的项目源码指定 java.version=1.8,但关键在于 Spring Boot Maven Plugin 的编译目标 JDK 版本高于您的运行环境。
根本原因在于 Spring Boot 版本演进策略:
- ✅ Spring Boot 2.5.x 及更早版本:Maven 插件默认兼容 JDK 8(class version ≤ 52.0);
- ❌ Spring Boot 2.6.0+(含 2.6.6):官方要求构建环境为 JDK 17+,其 Maven 插件(如 spring-boot-maven-plugin)已使用 Java 17 编译,故 class 版本升至 61.0,无法在 JDK 8 下加载。
您提到将 Spring Boot 从 2.6.6 降级到 2.1.x 是可行的,但需注意:Spring Boot 2.1.x 已于 2020 年结束生命周期(EOL),存在安全与兼容风险。更推荐的合规解法是:
✅ 推荐解决方案:精准匹配 Spring Boot 与 JDK 8 的最后兼容版本
使用 Spring Boot 2.5.18(2023年发布的最后一个支持 JDK 8 的维护版本),并在 pom.xml 中显式声明插件版本,避免继承父 POM 中可能混入的高版本插件:
立即学习“Java免费学习笔记(深入)”;
org.springframework.boot spring-boot-starter-parent 2.5.18 org.springframework.boot spring-boot-maven-plugin 2.5.18
? 验证与注意事项
- 运行 mvn -v 确认 Maven 启动的 JDK 确实为 1.8.0_121(而非系统默认 JDK 17);
- 清理本地 Maven 仓库中可能残留的高版本插件:删除 ~/.m2/repository/org/springframework/boot/spring-boot-maven-plugin/ 下非 2.5.x 的目录;
- 若使用 IDE(如 IntelliJ),需在 Settings → Build → Build Tools → Maven → Importing 中指定正确的 JDK for importer;
- 长期建议升级 JDK 至 17+ 并采用 Spring Boot 3.x(需 Jakarta EE 9+),以获得持续安全更新与新特性支持。
? 总结:该错误非配置疏漏,而是 Spring Boot 版本策略与 JDK 生命周期强绑定的结果。匹配原则是「插件编译 JDK ≥ 项目运行 JDK」,在受限于 JDK 8 的场景下,唯一安全选择是 Spring Boot 2.5.x 系列,并务必显式声明插件版本。










