我在 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。