Hibernate二级缓存EhCache库不匹配?

时间:2010-09-02 15:01:30

标签: hibernate jboss java-ee ehcache liquibase

我正在使用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 中的缓存(!)

这会给某人敲钟吗?任何线索都非常受欢迎。

谢谢!

3 个答案:

答案 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。