我有一个部署在Jboss eap 6.2上的应用程序。它使用hibernate验证器5.1.0由于jboss附带了它自己的(较旧的)版本,所以我使用j-boss-deployment-structure.xml将其从我的war类路径中排除,如下所示:
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<exclusions>
<module name="org.apache.log4j"/>
<module name="org.slf4j"/>
<module name="org.hibernate.validator"/>
</exclusions>
</deployment>
</jboss-deployment-structure>它解决了这个问题,但现在给了我一个例外:
Caused by: java.lang.NoSuchMethodError: javax.validation.spi.ConfigurationState.getParameterNameProvider()Ljavax/validation/ParameterNameProvider;
5437 at org.hibernate.validator.internal.engine.ValidatorFactoryImpl.<init>(ValidatorFactoryImpl.java:133) [hibernate-validator-5.1.0.Final.jar:5.1.0.Final]
5438 at org.hibernate.validator.HibernateValidator.buildValidatorFactory(HibernateValidator.java:45) [hibernate-validator-5.1.0.Final.jar:5.1.0.Final]
5439 at org.hibernate.validator.internal.engine.ConfigurationImpl.buildValidatorFactory(ConfigurationImpl.java:236) [hibernate-validator-5.1.0.Final.jar:5.1.0.Fi nal]
5440 at org.springframework.validation.beanvalidation.LocalValidatorFactoryBean.afterPropertiesSet(LocalValidatorFactoryBean.java:229) [spring-context-3.2.6.RELE ASE.jar:3.2.6.RELEASE]
5441 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1571) [spring-bean s-3.2.7.RELEASE.jar:3.2.7.RELEASE]
5442 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1509) [spring-beans-3 .2.7.RELEASE.jar:3.2.7.RELEASE]
5443 ... 36 more所以我也试着排除了javax.validation包:
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<exclusions>
<module name="javax.validation"/>
<module name="org.apache.log4j"/>
<module name="org.slf4j"/>
<module name="org.hibernate.validator"/>
</exclusions>
</deployment>
</jboss-deployment-structure>这似乎没有什么帮助。它仍然给出同样的错误。感谢您的任何建议/帮助
发布于 2014-10-09 21:44:48
我们有一个自定义验证器,它使用5.1.0版本中的方法:
ctx.buildConstraintViolationWithTemplate(ctx.getDefaultConstraintMessageTemplate()).addPropertyNode在4.3.1中,最终该方法不是addPropertyNode,而是addNode
ctx.buildConstraintViolationWithTemplate(...).addNode最后,为了完成这项工作,我最终将我的应用程序降级到了4.3.1。我认为这应该由j-boss-deployment-structure.xml中的排除来处理,但是由于某些原因它不能工作。
发布于 2016-11-03 22:30:24
问题是由于jboss提供了验证api 1.0,但hibernate-validator是基于1.1构建的,因此您可以在jboss-deployment-structure中排除验证api和依赖模块。请注意,默认情况下,javaee.api提供此依赖项,因此您可能需要在<dependency>块中手动包含所需的依赖项。
<exclusions>
<module name="javaee.api"/>
<module name="javax.validation.api"/>
<module name="javax.faces.api"/>
<module name="org.jboss.resteasy.resteasy-hibernatevalidator-provider"/>
<module name="org.hibernate.validator"/>
</exclusions>https://stackoverflow.com/questions/26047220
复制相似问题