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

从Hibernate Search 5.9.2迁移至5.10.1时Tomcat启动遇类找不到异常

解决Hibernate Search 5.10.1迁移时的NoClassDefFoundError问题

这个问题我之前帮人排查过,核心原因是Hibernate Search 5.10.x和你当前使用的Hibernate ORM 5.2.17版本不兼容,具体来说:

  • 你遇到的java.lang.NoClassDefFoundError: org/hibernate/resource/beans/container/spi/ExtendedBeanManager$LifecycleListener,这个类是Hibernate ORM 5.3.x版本才新增的API,而你的Hibernate ORM 5.2.17中根本没有这个类,所以Tomcat启动时会找不到它。

具体解决步骤

1. 升级Hibernate ORM到兼容版本

Hibernate Search 5.10.x系列要求搭配Hibernate ORM 5.3.x版本(官方兼容规则明确说明)。建议你把Hibernate ORM版本升级到5.3.x的稳定版,比如5.3.20.Final(这是5.3系列的最后一个稳定版本)。

修改你的Maven依赖:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.3.20.Final</version>
</dependency>

2. 验证其他依赖的兼容性

你当前的技术栈和升级后的Hibernate ORM 5.3.x是兼容的:

  • Spring Framework 5.0.6:完全支持Hibernate ORM 5.3.x
  • Spring Data JPA 2.0.7:官方明确支持Hibernate ORM 5.2和5.3版本
  • Hibernate Validator 6.0.10:与Hibernate ORM 5.3.x兼容无冲突
  • Spring Security 5.0.5:和Spring 5.0.x配套,不会出现兼容性问题

3. 清理Maven缓存并重新构建

修改依赖后,执行以下命令清理缓存并重新构建项目,确保新的依赖包被正确下载:

mvn clean install -U

4. 重启Tomcat验证

完成上述步骤后,重启Tomcat,应该就能成功创建entityManagerFactory Bean,解决启动错误了。

额外说明

如果你暂时不想升级Hibernate ORM,那只能放弃升级到Hibernate Search 5.10.x,继续使用5.9.2版本(因为5.9.x系列是兼容Hibernate ORM 5.2.x的)。但从长期维护角度,更推荐升级ORM到兼容版本,这样能获得Hibernate Search 5.10的新特性和Bug修复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:45:15