1

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

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

谢谢!

4

3 回答 3

1

以后还有其他“由”消息吗?

我可能是 liquibase 是针对比您运行的更早版本的 hibernate 构建的,并且 hibernate API 已更改。您是否刚刚添加了ehcache依赖项?还是hibernate也升级了?

于 2010-09-02T16:11:43.353 回答
1

看起来是版本不匹配。

实际上,EhCache 2.2 似乎更适合我的配置。(休眠 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”,这使得依赖层次更清晰。)

于 2010-09-02T16:52:03.867 回答
0

该工件hibernate-ehcache没有添加任何特定的 Hibernate 工件,所以我不确定它是否真的是问题的根本原因。但是,也许您更改了类路径顺序(通过在liquidbase 之前声明它)并且您发现了问题。您可以尝试在之后(在 pom.xml 中)声明它。

您还可以尝试运行 JVM-Xverify:all以查看是否收到更有用的消息。

或者,针对 Hibernate 3.5.x 重新编译 liquibase。

于 2010-09-02T16:56:39.257 回答