我们正在使用JBoss 4.2.3,后者又带有Hibernate的3.2.1.ga版本。我想使用支持JPA 2.0的Hibernate 3.5.1-FINAL。我一直试图通过将我自己的hibernate jar放入我的WEB-INF / lib文件夹并在jboss-web.xml中为我的WAR创建自己的类加载器来完成这项工作
<jboss-web>
<loader-repository>
com.moo.foo:archive=catalog-archive
</loader-repository>
</jboss-web>
我也试过了:
<jboss-web>
<class-loading java2ClassLoadingCompliance="false">
<loader-repository>
com.moo.catalog:loader=catalogLoader
<loader-repository-config>java2ParentDelegation=false</loader-repository-config>
</loader-repository>
</class-loading>
</jboss-web>
但是我遇到了各种各样的问题,这是我目前坚持的例外情况:
Caused by: java.lang.NoSuchMethodException: org.hibernate.validator.ClassValidator.<init>(java.lang.Class, java.util.ResourceBundle, org.hibernate.validator.MessageInterpolator, java.util.Map, org.hibernate.annotations.common.reflection.ReflectionManager)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.getDeclaredConstructor(Unknown Source)
at org.hibernate.cfg.AnnotationConfiguration.applyHibernateValidatorLegacyConstraintsOnDDL(AnnotationConfiguration.java:443)
由于截止日期即将来临,我想我最好问一下它是否可能? :)
答案 0 :(得分:14)
可能为时已晚,但它可能会帮助找到此线程的人找到上面描述的问题'由...引起:java.lang.NoSuchMethodException:org.hibernate.validator.ClassValidator ....':
我正在使用Jboss 4.2,Hibernate Core 3.6.5,Hibernate Validator 4.1.0,使用maven,我遇到了同样的问题。最后我解决了它还添加了这种依赖:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator-legacy</artifactId>
<version>4.0.2.GA</version>
</dependency>
答案 1 :(得分:8)
我没有亲自测试,但是following thread提到了两种你可以尝试的方法(是的,我知道,它是关于JBoss 5的,但看起来问题是相同的。)
禁用java2ParentDelegation
(您的第二个jboss-web.xml),将您的Hibernate JAR捆绑到您的应用中,并将以下属性添加到您的persistence.xml
(以“避免”您所面临的问题) :
<property name="hibernate.validator.apply_to_ddl">false</property>
<property name="hibernate.validator.autoregister_listeners">false</property>
一位用户报告说这对他不起作用。
禁用java2ParentDelegation
(您的第二个jboss-web.xml),将您的Hibernate JAR捆绑到您的应用中,并覆盖common/lib
中的hibernate-validator JAR 。
我无法解释为什么来自commons/lib
的hibernate-validator仍被选中。