从 JDK 1.8 升级到 JDK 21 后报错javax.validation.NoProviderFoundException
2025年9月11日 by admin
JDK 1.8 升级到 JDK 21 后 NoProviderFoundException 错误:
javax.validation.NoProviderFoundException: Unable to create a Configuration, because no Jakarta Bean Validation provider could be found. Add a provider like Hibernate Validator (RI) to your classpath. at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:291) ~[jakarta.validation-api-2.0.2.jar:?]
这个错误表明,应用程序无法找到 Jakarta Bean Validation 的提供者(例如 Hibernate Validator),从 JDK 1.8 升级到 JDK 21 后,可能发生了兼容性或依赖冲突问题。
要解决这个问题,你可以按以下步骤操作:
pom.xml 中添加以下依赖(如果是使用 Maven): <dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>7.0.4.Final</version> <!-- 或使用其他兼容的版本 -->
</dependency>
或者如果你使用的是 Gradle:
dependencies {
implementation 'org.hibernate:hibernate-validator:7.0.4.Final' // 或其他版本
}
javax.validation 包已被迁移为 jakarta.validation,因此,你需要确保使用的是 Jakarta 版本的 Bean Validation API(jakarta.validation-api)而不是 javax.validation-api。 如果你还没有添加 jakarta.validation-api,请确保在 pom.xml 中也有这个依赖: <dependency>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
<version>2.0.2</version>
</dependency>
mvn clean install -U
对于 Gradle,使用:
gradle clean build --refresh-dependencies
hibernate-validator 和 jakarta.validation-api,并且没有版本冲突。这些步骤应该能够帮助你解决 NoProviderFoundException 错误。