代码之家  ›  专栏  ›  技术社区  ›  Jan

休眠二级缓存ehcache库不匹配?

  •  1
  • Jan  · 技术社区  · 14 年前

    我使用的是Hibernate3.5.0、JBossAS6和Liquibase 1.9.5。

    我想激活 EHACHACE 休眠二级缓存 如下:

    我要做的第一件事是向 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]
            ...
    

    请注意,我没有激活 坚持XML 然而(!)

    这会对某人敲响警钟吗?任何线索都不受欢迎。

    谢谢您!

    3 回复  |  直到 14 年前
        1
  •  1
  •   Nathan Voxland    14 年前

    稍后是否还有其他“由”消息?

    我可能是Liquibase是根据比您运行的更早版本的Hibernate构建的,HibernateAPI已经更改。您刚刚添加了ehcache依赖项吗?或者Hibernate也升级了?

        2
  •  1
  •   Jan    14 年前

    版本不匹配。

    实际上,ehcache 2.2似乎更适合我的配置。(Hibernate 3.5.0和JBoss AS 6(和Liquibase 1.9.5)):

    添加到 坚持XML :

        <property name="hibernate.cache.region.factory_class" value="net.sf.ehcache.hibernate.EhCacheRegionFactory"/>
    

    添加到 XML :

    <dependency>
        <groupId>net.sf.ehcache</groupId>
        <artifactId>ehcache-core</artifactId>
        <version>2.2.0</version>
    </dependency>
    

    (这种Maven依赖性并不明确地依赖于“hibernate”,这使得依赖层次结构更加清晰。)

        3
  •  0
  •   Pascal Thivent    14 年前

    伪影 hibernate-ehcache 不会添加任何特定的休眠工件,所以我不确定这是否是问题的根本原因。但是,可能您更改了类路径顺序(在liquidbase之前声明它),并且 揭示 问题。您可以尝试在之后(在pom.xml中)声明它。

    您还可以尝试使用 -Xverify:all 看看你有没有收到更有用的信息。

    或者,根据hibernate 3.5.x重新编译liquibase。

    推荐文章