2

我有一个 spring 项目,我在其中使用如下验证器:

<beans:bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"  
            p:basenames="WEB-INF/i18n/messages,WEB-INF/i18n/application" 
            p:fallbackToSystemLocale="false" />         

<beans:bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
    <beans:property name="validationMessageSource" ref="messageSource" />
</beans:bean>

<annotation-driven validator="validator" />

<resources location="/, classpath:/META-INF/web-resources/" mapping="/resources/**" />

当我运行该项目时,我得到以下信息BeanCreationException

org.springframework.beans.factory.BeanCreationException: Error creating bean with
name 'validator' defined in ServletContext resource [/WEB-INF/spring/appServlet
/servlet-context.xml]: Error setting property values; nested exception is 
org.springframework.beans.PropertyBatchUpdateException; nested 
PropertyAccessExceptions (1) are:

PropertyAccessException 1: org.springframework.beans.MethodInvocationException: 
Property 'validationMessageSource' threw exception; nested exception is 
java.lang.NoClassDefFoundError: org/hibernate/validator/resourceloading/ResourceBundleLocator

这是我的 POM 片段:

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
    <version>1.3.2.RELEASE</version>
</dependency>
<!-- Hibernate entity manager with JPA 2 support. -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>4.3.0.Beta2</version>
</dependency>

<!-- Hibernate’s implementation of JSR-303. -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>4.2.0.Final</version>
</dependency>

<!-- The JSR-303 Bean Validation API library. -->
<dependency>
   <groupId>javax.validation</groupId>
   <artifactId>validation-api</artifactId>
   <version>1.0.0.GA</version> 
</dependency>

为什么我收到此错误?

谢谢

4

5 回答 5

2

你的依赖没问题。根据提供的信息,该错误不应出现。

所以我建议你检查你的 IDE 以及hibernate-validator依赖项是否真的在类路径上。如果您将 Eclipse 与 M2E 一起使用,请尝试更新您的项目:

  • 项目(右键单击项目)> Maven > 更新项目...。
于 2013-06-12T20:37:18.737 回答
2

这可能是一个损坏的向后兼容性问题:https ://jira.springsource.org/browse/SPR-10466

于 2013-07-19T09:41:27.277 回答
2

我在使用 hibernate 5.2.10.Final 和 hibernate-validator 6.0.2.Final 时遇到了类似的问题(该软件包版本似乎与其他软件包版本不同步)。事实证明,hibernate-validator 的 groupId 已从 更改org.hibernateorg.hibernate.validator。进行更改后,错误就消失了,但是我正在使用 Dropwizard 并注意到某处可能存在版本冲突,因此需要注意。

于 2017-09-12T14:54:43.940 回答
0

我也遇到了同样的问题,尝试了各种 JAR 版本、不同 bean 定义,甚至自定义类实现的组合。原来,我只需要清理项目并重新启动 Eclipse。问题解决了,吸取教训!

于 2014-04-03T14:31:40.947 回答
0

检查你的依赖

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>4.2.8.Final</version>
</dependency>

必须与其他 Hibernate 依赖项的版本相同。

于 2015-02-11T21:20:01.040 回答