我有一个春季项目,我正在使用如下的验证器:
<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>
为什么我收到此错误?
由于
答案 0 :(得分:2)
你的依赖关系没问题。根据提供的信息,不应出现错误。
所以我建议你检查你的IDE以及hibernate-validator
依赖关系是否真的在classpath上。如果您将Eclipse与M2E一起使用,请尝试更新您的项目:
答案 1 :(得分:1)
这可能是一个破坏的向后兼容性问题:https://jira.springsource.org/browse/SPR-10466
答案 2 :(得分:0)
我也遇到了同样的问题,尝试了JAR版本的各种组合,不同的bean定义,甚至是自定义的类实现。事实证明,我只需要清理项目并重新启动Eclipse。问题解决了,吸取了教训!
答案 3 :(得分:0)
检查你的依赖
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.2.8.Final</version>
</dependency>
必须与其他Hibernate依赖项的版本相同。
答案 4 :(得分:0)
我在使用hibernate 5.2.10.Final和hibernate-validator 6.0.2.Final时遇到了类似的问题(该软件包版本似乎与其他版本不同步)。事实证明,hibernate-validator的groupId已从org.hibernate
更改为org.hibernate.validator
。一旦我做了这个改变,错误消失了,但是我使用Dropwizard并注意到某处可能存在版本冲突,所以这是值得关注的事情。