2

我在 JBoss AS 5.1.0 中使用 Bean Validation 1.0 时遇到问题。

当我使用 Hibernate Validator 4.3.0.Final 时,当我尝试验证对象时会发生以下异常:

NoSuchMethodError... 尝试调用 org.jboss.logging.Logger.getMessageLogger(Class type, String category)

问题是:

- hibernate-validator 4.3 的依赖关系树包含:

+- org.hibernate:hibernate-validator:jar:4.3.0.Final:compile
|  +- javax.validation:validation-api:jar:1.0.0.GA:compile
|  \- org.jboss.logging:jboss-logging:jar:3.1.0.CR2:compile

- jboss-as-server 5.1 的依赖关系树包含:

+- org.jboss.jbossas:jboss-as-server:5.1.0.GA
|  +- org.jboss.logging:jboss-logging-spi:2.1.0.GA
|  +- etc...

而 jboss-logging-spi 2.1 中的旧Logger类(位于 JBOSS_HOME/lib 中)不包含此方法。

我的问题是:

如何强制部署在 JBoss 中的应用程序使用更新的 jboss-logging 库?

我目前的解决方法:

目前,我发现的解决方法是使用 hibernate-validator 4.1.0.Final ,它不使用jboss-logging而是使用slf4j-api

4

2 回答 2

1

您可以在 JBoss AS 5.x 中通过添加一个名为jboss-classloading.xmlto WEB-INF(部署 WAR 时)或META-INF(部署 EAR 时)的文件来配置类加载细节。在发生 WAR 的情况下,以下应该可以解决问题:

<classloading xmlns="urn:jboss:classloading:1.0"
    domain="YourAppNameDomain"
    parent-domain="Ignored"
    export-all="NON_EMPTY"
    import-all="true">
</classloading>

您可以在此处此处此处找到有关可用选项的更多信息。

于 2013-06-26T06:24:51.603 回答
0

在 pom 顺序中添加hibernate-validatorafterhibernate-core为我解决了类似的问题。

于 2016-08-24T19:01:32.597 回答