
spring boot 3.x 构建失败:java 版本不兼容问题详解——spring boot 3.x 要求 jdk 17+ 运行环境,而当前使用 jdk 11 导致 `spring-boot-maven-plugin:3.0.1` 的 `build-info` 目标加载失败——因插件字节码版本为 61.0(对应 java 17),jdk 11 仅支持至 55.0。升级 jdk 是根本解决方案。
Spring Boot 3.0 及以上版本(包括 spring-petclinic 主分支所用的 3.0.1)强制要求 JDK 17 或更高版本,这是官方明确规定的最低运行时要求。你遇到的错误:
Unable to load the mojo 'build-info' [...] 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 55.0
清晰揭示了核心矛盾:
- class file version 61.0 → 对应 Java 17(JDK 17 编译生成)
- up to 55.0 → 对应 Java 11(JDK 11 最高兼容版本)
因此,JDK 14 并非推荐解法(尽管技术上可加载 61.0 字节码,但 Spring Boot 3.x 官方仅认证 JDK 17+)。Spring 官方文档明确指出:
"Spring Boot 3.0 requires Java 17 or later." —— Spring Boot 3.0 Release Notes
✅ 正确解决步骤如下:
立即学习“Java免费学习笔记(深入)”;
-
卸载旧 JDK 11(可选,避免冲突)
sudo apt remove openjdk-11-jdk
-
安装 JDK 17(推荐 LTS 版本)
- Ubuntu/WSL2 推荐使用 Eclipse Temurin:
# 添加仓库并安装 sudo apt update && sudo apt install -y wget curl gnupg wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo apt-key add - echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME=/ {print $2}' /etc/os-release) main" | sudo tee /etc/apt/sources.list.d/temurin.list sudo apt update sudo apt install -y temurin-17-jdk
- Ubuntu/WSL2 推荐使用 Eclipse Temurin:
-
验证并切换默认 Java 版本
java -version # 应输出类似:openjdk version "17.0.9" ... sudo update-alternatives --config java # 选择 JDK 17 路径 sudo update-alternatives --config javac
-
确认 Maven 使用正确 JDK
mvn -v # 输出中 "Java version" 必须为 17.x
若仍显示 JDK 11,请设置环境变量:
export JAVA_HOME=/usr/lib/jvm/temurin-17-jdk-amd64 export PATH=$JAVA_HOME/bin:$PATH
-
清理并重新构建项目
./mvnw clean ./mvnw package # 或直接 ./mvnw spring-boot:run
⚠️ 注意事项:
- 不要尝试降级 Spring Boot 版本来适配 JDK 11——这违背项目现代化目标,且 spring-petclinic 主干已全面迁移至 Jakarta EE 9+ 和 Spring Boot 3;
- 若需在本地同时维护 JDK 11 项目,建议使用 sdkman! 管理多 JDK 环境:
curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-init.sh" sdk install java 17.0.9-tem sdk use java 17.0.9-tem
- Maven 3.6.0 可用,但建议升级至 3.8.6+ 以获得更好 JDK 17 兼容性与安全更新。
总结:该错误本质是JVM 版本不匹配引发的字节码加载失败,而非配置或网络问题。唯一可靠、符合 Spring Boot 3.x 设计契约的修复方式,是将开发环境升级至 JDK 17(LTS)或 JDK 21(最新 LTS)。完成升级后,spring-petclinic 将顺利通过编译、测试并启动。










