jdk对应class file versions对照表
问题
你的异常是典型的 JDK 版本不兼容:RepackageMojo 的 class file version 是 61.0(JDK17 编译),而你当前运行 Maven 的 JDK 只有 52.0(JDK8)。
换句话讲:
插件是 JDK17 编译的,你却用 JDK8 去执行构建 → JVM 直接拒绝运行。
解决
1.升级你的 Maven 构建 JDK 到 JDK17
这是最稳的方案,因为 Spring Boot 3.x 基本全是 JDK17。
检查当前 Maven 使用的 JDK:
1 | mvn -v |
如果显示 Java 8:
macOS 环境切换 JDK:
1 | export JAVA_HOME=`/usr/libexec/java_home -v 17` |
或者全局方式改到 JDK17。
2.如果必须使用 JDK8,则需要降低 Spring Boot Maven Plugin 版本
Spring Boot 3.x 只支持 JDK17+
JDK8 只能用 Spring Boot 2.7.x 或以下。
pom.xml 替换插件:
1 | <plugin> |
3.如果你是通过 CI/CD/容器执行,检查构建镜像
例如 Dockerfile:
1 | FROM maven:3.9.5-eclipse-temurin-8 |
这种构建镜像会导致你永远是 Java8 → 直接改成 Java17:
1 | FROM maven:3.9.5-eclipse-temurin-17 |
JDK 与 class file version 对照表
| JDK 版本 | class file version |
|---|---|
| JDK 1.1 | 45.3 |
| JDK 1.2 | 46.0 |
| JDK 1.3 | 47.0 |
| JDK 1.4 | 48.0 |
| JDK 5 (1.5) | 49.0 |
| JDK 6 (1.6) | 50.0 |
| JDK 7 (1.7) | 51.0 |
| JDK 8 (1.8) | 52.0 |
| JDK 9 | 53.0 |
| JDK 10 | 54.0 |
| JDK 11 | 55.0 |
| JDK 12 | 56.0 |
| JDK 13 | 57.0 |
| JDK 14 | 58.0 |
| JDK 15 | 59.0 |
| JDK 16 | 60.0 |
| JDK 17 | 61.0 |
| JDK 18 | 62.0 |
| JDK 19 | 63.0 |
| JDK 20 | 64.0 |
| JDK 21 | 65.0 |
| JDK 22 | 66.0 |