我在JBoss AS 5.1.0中使用Bean Validation 1.0有问题。
当我使用Hibernate Validator 4.3.0.Final时,当我尝试验证对象时会出现以下异常:
没有这样的方法错误...尝试调用 org.jboss.logging.Logger.getMessageLogger(类类型,字符串类别)时
问题是:
+- 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
+- org.jboss.jbossas:jboss-as-server:5.1.0.GA
| +- org.jboss.logging:jboss-logging-spi:2.1.0.GA
| +- etc...
并且jbos-loging-spi 2.1中的旧Logger类(位于JBOSS_HOME/lib中)不包含此方法。
如何强制我部署在JBoss中的应用程序使用更新的jboss-logging库?
目前,我发现的解决方法是使用hibernate-validator 4.1.0.Final,它不使用jboss-logging,而是使用slf4j-api。
您可以通过添加名为<code>JBoss classloading的文件来配置JBoss AS 5.x中的类加载细节。xml转换为WEB-INF
(当部署WAR时)或META-INF
<classloading xmlns="urn:jboss:classloading:1.0"
domain="YourAppNameDomain"
parent-domain="Ignored"
export-all="NON_EMPTY"
import-all="true">
</classloading>
您可以在这里、这里和这里找到有关可用选项的更多信息。
在pom顺序中的< code>hibernate-core之后添加< code>hibernate-validator解决了我遇到的类似问题。