You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Hibernate-Jakarta版本后Spring Boot 2.7.x应用启动失败求助

问题描述

升级hibernate-core-jakarta版本后,运行基于Java 17、Spring Boot 2.7.x的项目时出现如下错误:

java.lang.NoClassDefFoundError: org/springframework/aot/hint/TypeHint$Builder
项目依赖配置
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-core-jakarta</artifactId>
  <version>5.6.14.Final</version>
</dependency>
<dependency>
  <groupId>jakarta.persistence</groupId>
  <artifactId>jakarta.persistence-api</artifactId>
  <version>3.1.0</version>
</dependency>
<dependency>
  <groupId>jakarta.transaction</groupId>
  <artifactId>jakarta.transaction-api</artifactId>
  <version>2.0.1</version>
</dependency>
<dependency>
  <groupId>jakarta.validation</groupId>
  <artifactId>jakarta.validation-api</artifactId>
  <version>3.0.2</version>
</dependency>
<dependency>
  <groupId>org.eclipse.angus</groupId>
  <artifactId>jakarta.mail</artifactId>
  <version>1.0.0</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-web</artifactId>
  <version>6.0.0</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context-support</artifactId>
  <version>6.0.3</version>
</dependency>
<dependency>
  <groupId>jakarta.activation</groupId>
  <artifactId>jakarta.activation-api</artifactId>
  <version>2.0.1</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>6.0.0</version>
</dependency>
解决方案

这个错误的核心是Spring版本不兼容:你用的Spring Boot 2.7.x对应Spring Framework 5.3.x,但手动引入了Spring Framework 6.x的依赖(spring-web、spring-context等都是6.0.x版本)。org.springframework.aot.hint.TypeHint$Builder是Spring 6.x新增的AOT类,Spring 5.3.x根本没有这个类,所以抛出找不到类的错误。

按以下步骤修复:

  • 移除所有手动指定版本的Spring Framework依赖(spring-web、spring-context-support、spring-context),让Spring Boot的依赖管理自动控制版本,避免版本冲突。
  • 调整Jakarta API版本适配Spring Boot 2.7.x:Spring Boot 2.7.x对应Jakarta EE 8,你当前用的Jakarta API都是3.x/2.x版本,超出了兼容范围,需要降到对应版本:
    • jakarta.persistence-api改为2.2.3
    • jakarta.transaction-api改为1.3.3
    • jakarta.validation-api改为2.0.2
    • jakarta.mail替换为com.sun.mail:jakarta.mail:1.6.7(适配Jakarta EE 8的邮件API)

修正后的依赖示例:

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-core-jakarta</artifactId>
  <version>5.6.14.Final</version>
</dependency>
<dependency>
  <groupId>jakarta.persistence</groupId>
  <artifactId>jakarta.persistence-api</artifactId>
  <version>2.2.3</version>
</dependency>
<dependency>
  <groupId>jakarta.transaction</groupId>
  <artifactId>jakarta.transaction-api</artifactId>
  <version>1.3.3</version>
</dependency>
<dependency>
  <groupId>jakarta.validation</groupId>
  <artifactId>jakarta.validation-api</artifactId>
  <version>2.0.2</version>
</dependency>
<dependency>
  <groupId>com.sun.mail</groupId>
  <artifactId>jakarta.mail</artifactId>
  <version>1.6.7</version>
</dependency>
<!-- Spring相关依赖由Spring Boot父依赖自动管理,无需手动指定版本 -->

最后执行mvn clean install(或Gradle的clean build)刷新依赖,重新启动项目即可。

内容的提问来源于stack exchange,提问作者ebrukaya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 21:40:59