
spring boot 3.0+ 要求 jdk 17 或更高版本(官方推荐),而当前使用 jdk 11 导致构建失败——因 `spring-boot-maven-plugin:3.0.1` 编译于 java 17(class file version 61.0),jdk 11 仅支持至版本 55.0。
该错误本质是 JVM 字节码版本不兼容:Maven 插件 spring-boot-maven-plugin:3.0.1 是用 Java 17(对应 class file version 61.0)编译的,而你本地运行的 JDK 11(version 55.0)无法加载更高版本的类文件,因此在执行 build-info 目标时抛出 ComponentLookupException。
✅ 正确解决方案:升级 JDK 至 17 或更高版本(推荐 JDK 17 LTS)
Spring Boot 3.x 官方明确要求 最低 JDK 17(Spring Boot 3.0 Requirements),JDK 14(version 61.0)虽可勉强通过字节码校验,但不被 Spring Boot 3.x 支持,且缺乏长期维护与安全更新。因此,请务必使用 JDK 17(LTS)或 JDK 21(LTS)。
? 操作步骤(以 Ubuntu/WSL2 为例):
-
下载并安装 JDK 17(推荐 Eclipse Temurin 17 或 openjdk-17-jdk):
# Ubuntu/Debian(启用 universe 源后) sudo apt update sudo apt install openjdk-17-jdk
-
验证并切换默认 Java 版本:
立即学习“Java免费学习笔记(深入)”;
# 查看已安装版本 update-java-alternatives -l
设置 JDK 17 为默认(路径依实际输出调整)
sudo update-java-alternatives --set java-1.17.0-openjdk-amd64
确认生效
java -version # 应输出类似:openjdk version "17.0.9" ... javac -version # 同样需为 17.x
3. 确保 Maven 使用新 JDK(检查 `mvn -v` 输出中的 `Java version` 是否为 17+);如仍显示旧版本,请设置环境变量: ```bash export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH
- 清理并重新构建项目:
cd spring-petclinic ./mvnw clean package -DskipTests
⚠️ 注意事项:
- 不要尝试降级 Spring Boot 版本来适配 JDK 11 —— 这违背项目目标(PetClinic 主分支已全面迁移至 Spring Boot 3.x);
- Maven 3.6.0 可用,但建议升级至 3.8.1+ 以获得更好的 JDK 17 兼容性;
- 若使用 IDE(如 IntelliJ IDEA),还需在 Project Settings → Project SDK / Language Level 中同步设为 JDK 17;
- spring-boot-maven-plugin:3.0.1 的 build-info 目标本身无害,但其类加载失败会中断整个构建流程,升级 JDK 后将自动恢复。
✅ 总结:Spring Boot 3.x 是一次重大升级,放弃对 JDK 8/11 的支持是设计使然。拥抱 JDK 17 不仅解决构建问题,更能利用 Records、Sealed Classes、Virtual Threads(JDK 21)等现代 Java 特性,提升应用性能与可维护性。










