
spring boot 3.0+ 要求 jdk 17 或更高版本(官方推荐),而错误提示中 class file version 61.0 对应 java 14,但实际 spring boot 3.0.1 已最低要求 jdk 17;当前使用 jdk 11 导致 maven 插件加载失败,需升级 jdk 并验证 maven 配置。
该构建失败的根本原因在于 JDK 版本与 Spring Boot 3.x 的强制兼容性要求不匹配。错误日志明确指出:
class file version 61.0 → 编译于 Java 14 this version of Java Runtime only recognizes up to 55.0 → 当前运行时为 Java 11(55.0)
但需特别注意:虽然 61.0 理论上对应 Java 14,Spring Boot 3.0.0+ 官方文档明确要求 JDK 17 作为最低运行环境(Spring Boot 3.0 Requirements)。Spring Boot 3.x 全面基于 Jakarta EE 9+、弃用 Java EE、并深度依赖 JDK 17 的新特性(如密封类、新的 GC 接口、强封装的模块系统等),其 Maven 插件(如 spring-boot-maven-plugin:3.0.1)本身即以 JDK 17 编译,因此仅靠升级到 JDK 14 仍无法解决问题——必须升级至 JDK 17 或更新版本(如 JDK 21 LTS)。
✅ 正确解决步骤如下:
-
卸载旧 JDK 11,安装 JDK 17+(推荐 Adoptium Temurin 17 或 Oracle JDK 17)
Ubuntu/WSL2 示例(使用 SDKMAN! 更便捷):# 安装 SDKMAN! curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-init.sh" # 列出可用 JDK 17 版本 sdk list java | grep -i "17\." # 安装并设为默认(例如 temurin-17.0.8+7) sdk install java 17.0.8-temurin sdk default java 17.0.8-temurin
-
验证 JDK 版本与 Maven 使用的 JDK 一致
立即学习“Java免费学习笔记(深入)”;
java -version # 应输出类似:openjdk version "17.0.8" ... mvn -v # 确保 "Java version" 行显示 17.x
⚠️ 注意:若 mvn -v 仍显示 Java 11,请检查 JAVA_HOME 是否指向 JDK 17:
echo $JAVA_HOME # 应为 /home/xxx/.sdkman/candidates/java/current 或类似路径 export JAVA_HOME=$HOME/.sdkman/candidates/java/current
-
清理并重新构建项目
cd spring-petclinic ./mvnw clean ./mvnw package -DskipTests # 首次建议跳过测试加速验证
✅ 成功时将看到 [INFO] BUILD SUCCESS 及生成的 target/spring-petclinic-3.0.0.jar。
? 额外注意事项:
- Spring Boot 3.x 不再支持 javax.* 包,请确保项目无遗留 javax.servlet.* 或 javax.validation.* 导入(已迁移至 jakarta.*);
- 若使用 IDE(IntelliJ/Eclipse),务必在项目设置中将 Project SDK、Maven runner JDK、Annotation Processors JDK 均设为 JDK 17+;
- Maven 3.6.0 虽可工作,但建议升级至 Maven 3.8.6+ 以获得更好的 JDK 17 支持和安全性修复。
总结:Spring Boot 3.x 是一次重大架构升级,JDK 17 是硬性前提,而非可选优化。切勿尝试通过降级 Spring Boot 版本(如回退到 2.7.x)来适配旧 JDK——这将失去所有 Spring Boot 3 的现代化能力(如 GraalVM 原生镜像、Observability 增强、OAuth2 Resource Server 默认支持等)。坚持使用 JDK 17+,是拥抱 Spring 生态未来演进的正确起点。










