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

升级Hibernate依赖后报javax.validation.ValidatorFactory类缺失错误求助

问题根因

你的报错由Hibernate组件版本不兼容导致:

  • Hibernate Validator 7.x 属于Jakarta EE 9+技术栈,校验API包名已全部改为jakarta.validation.*,完全移除了javax.validation相关类
  • 你同步使用的Hibernate Core 5.5.x 仍基于Java EE 8规范,依赖javax.validation.ValidatorFactory类,启动时会查找该类但Validator 7中不存在,因此抛出类不存在异常
解决方案

提供两种适配方案,可根据项目整体技术栈选择:

方案1:保持Hibernate Core 5.5.x 版本,降级Hibernate Validator到6.x系列

该方案无需修改业务代码中的校验相关导包,改动量最小:

  • 调整依赖配置如下:
implementation 'org.hibernate:hibernate-core:5.5.7.Final'
// 6.2.x为6系列最终稳定版,完全兼容javax.validation API
implementation 'org.hibernate.validator:hibernate-validator:6.2.5.Final'
implementation 'org.hibernate:hibernate-c3p0:5.5.7.Final'
// 可选:显式引入javax校验API,避免传递依赖缺失
implementation 'javax.validation:validation-api:2.0.1.Final'

方案2:全量迁移至Jakarta EE 规范栈,保留Hibernate Validator 7.x

如果项目已计划升级至Jakarta命名空间,可选择该方案:

  • 首先升级Hibernate Core到6.x版本(6.0及以上版本原生支持Jakarta规范)
  • 调整依赖配置如下:
// 6.x系列默认使用Jakarta命名空间
implementation 'org.hibernate:hibernate-core:6.4.4.Final'
implementation 'org.hibernate.validator:hibernate-validator:7.0.1.Final'
implementation 'org.hibernate:hibernate-c3p0:6.4.4.Final'
// 显式引入Jakarta校验API
implementation 'jakarta.validation:jakarta.validation-api:3.0.2'
  • 额外调整:将项目中所有import javax.validation.*的导包语句,统一替换为import jakarta.validation.*
冲突排查方法

如果修改依赖后仍存在包冲突,可执行以下Gradle命令查看校验API的传递依赖树,定位冲突来源:

./gradlew dependencies --configuration runtimeClasspath | grep -A 10 -B 2 "validation"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:45:03