Java11迁移至Java17遇Unsupported class file major version 61错误求助
解决Java 11迁移至Java 17时Quarkus项目的字节码增强错误
问题根源
错误栈中的Unsupported class file major version 61是核心线索:
- 版本号61对应Java 17,意味着项目用Java 17编译,但当前依赖的Hibernate字节码增强工具不支持该版本。
- 主要问题有两个:
- 旧版Quarkus集成的Hibernate ORM版本无法兼容Java 17
- Lombok 1.18.24对Java 17的支持不完善
修复方案
1. 升级Quarkus到支持Java 17的版本
Quarkus从2.7.x版本开始正式支持Java 17,推荐升级到最新稳定版(如3.x系列,兼容性更佳)。若使用Maven,需确保quarkus-bom版本正确:
<dependencyManagement> <dependencies> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-bom</artifactId> <version>3.12.0</version> <!-- 替换为最新稳定版 --> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
2. 升级Lombok版本
Lombok 1.18.24对Java 17的支持存在缺陷,需升级至至少1.18.30版本:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.30</version> </dependency>
3. 清理并重新构建项目
执行Maven命令清理旧编译产物,避免版本冲突:
mvn clean install -DskipTests
额外检查项
- 确认
maven-compiler-plugin已配置为Java 17:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <configuration> <source>17</source> <target>17</target> </configuration> </plugin>
- 检查自定义依赖
common-lib是否也使用Java 17编译,防止引入旧字节码版本的依赖。
验证
重新运行测试:
mvn test
内容的提问来源于stack exchange,提问作者quinzo
相关产品推荐
相关产品推荐

