我正在使用Hibernate 3.5.0,JBoss AS 6和Liquibase 1.9.5。
我想按如下方式激活 EhCache Hibernate二级缓存:
我做的第一件事是向 pom.xml 添加新的依赖项:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>3.5.0-Final</version>
</dependency>
现在,当我重新部署我的应用程序时,抛出以下异常:
Caused by: java.lang.VerifyError: (class: liquibase/database/HibernateDatabase, method: <init> signature: (Ljava/lang/String;)V) Bad type in putfield/putstatic
at java.lang.Class.getDeclaredMethods0(Native Method) [:1.6.0_18]
at java.lang.Class.privateGetDeclaredMethods(Class.java:2427) [:1.6.0_18]
at java.lang.Class.getDeclaredMethods(Class.java:1791) [:1.6.0_18]
at org.jboss.deployment.AnnotatedClassFilter.hasAnnotations(AnnotatedClassFilter.java:186) [:6.0.0.20100429-M3]
at org.jboss.deployment.AnnotatedClassFilter.accepts(AnnotatedClassFilter.java:114) [:6.0.0.20100429-M3]
at org.jboss.deployment.AnnotatedClassFilter.visit(AnnotatedClassFilter.java:99) [:6.0.0.20100429-M3]
at org.jboss.vfs.VirtualFile.visit(VirtualFile.java:407) [jboss-vfs.jar:3.0.0.CR5]
at org.jboss.vfs.VirtualFile.visit(VirtualFile.java:409) [jboss-vfs.jar:3.0.0.CR5]
...
请注意,我没有激活 persistence.xml 中的缓存(!)
这会给某人敲钟吗?任何线索都非常受欢迎。
谢谢!
答案 0 :(得分:1)
以后是否有其他“由...引起”的消息?
我可能认为liquibase是针对早期版本的hibernate构建的,而不是你运行的hibernate API。你刚刚添加了ehcache依赖吗?或者hibernate也升级了吗?
答案 1 :(得分:1)
看起来版本不匹配。
实际上,EhCache 2.2似乎更适合我的配置。 (Hibernate 3.5.0和JBoss AS 6(以及Liquibase 1.9.5)):
添加到 persistence.xml :
<property name="hibernate.cache.region.factory_class" value="net.sf.ehcache.hibernate.EhCacheRegionFactory"/>
添加到 pom.xml :
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
<version>2.2.0</version>
</dependency>
(这个Maven依赖关系并不明确依赖于“Hibernate”,它使依赖性层次更加清晰。)
答案 2 :(得分:0)
工件hibernate-ehcache
没有添加任何特定的Hibernate工件,因此我不确定它是否是问题的根本原因。但是,也许您更改了类路径顺序(通过在Liquidbase之前声明它)并且显示问题。您可以尝试在(在pom.xml中)之后声明它。
您还可以尝试使用-Xverify:all
运行JVM,看看是否有更有用的消息。
或者,针对Hibernate 3.5.x重新编译liquibase。