首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有hibernate验证器5.1.0的jboss上的NoSuchMethodError

带有hibernate验证器5.1.0的jboss上的NoSuchMethodError
EN

Stack Overflow用户
提问于 2014-09-26 04:09:56
回答 2查看 2.1K关注 0票数 4

我有一个部署在Jboss eap 6.2上的应用程序。它使用hibernate验证器5.1.0由于jboss附带了它自己的(较旧的)版本,所以我使用j-boss-deployment-structure.xml将其从我的war类路径中排除,如下所示:

代码语言:javascript
复制
<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>

它解决了这个问题,但现在给了我一个例外:

代码语言:javascript
复制
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包:

代码语言:javascript
复制
<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>

这似乎没有什么帮助。它仍然给出同样的错误。感谢您的任何建议/帮助

EN

回答 2

Stack Overflow用户

发布于 2014-10-09 21:44:48

我们有一个自定义验证器,它使用5.1.0版本中的方法:

代码语言:javascript
复制
ctx.buildConstraintViolationWithTemplate(ctx.getDefaultConstraintMessageTemplate()).addPropertyNode

在4.3.1中,最终该方法不是addPropertyNode,而是addNode

代码语言:javascript
复制
ctx.buildConstraintViolationWithTemplate(...).addNode

最后,为了完成这项工作,我最终将我的应用程序降级到了4.3.1。我认为这应该由j-boss-deployment-structure.xml中的排除来处理,但是由于某些原因它不能工作。

票数 2
EN

Stack Overflow用户

发布于 2016-11-03 22:30:24

问题是由于jboss提供了验证api 1.0,但hibernate-validator是基于1.1构建的,因此您可以在jboss-deployment-structure中排除验证api和依赖模块。请注意,默认情况下,javaee.api提供此依赖项,因此您可能需要在<dependency>块中手动包含所需的依赖项。

代码语言:javascript
复制
    <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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26047220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档