1

I'm using Hibernate 3.5.0, JBoss AS 6 and Liquibase 1.9.5.

I wanted to activate EhCache Hibernate second-level caching as follows:

The first thing I do, is adding a new dependency to the pom.xml:

 <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-ehcache</artifactId>
            <version>3.5.0-Final</version>
 </dependency>

Now, when I redeploy my app, following Exception is thrown:

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]
        ...

Note that I didn't activate the caching in persistence.xml yet (!)

Does this ring a bell to somebody? Any clues are more than welcome.

Thank you!

4

3 に答える 3

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」に明示的に依存していません。)

于 2010-09-02T16:52:03.867 に答える
1

後で他の「Caused by」メッセージはありますか?

Liquibase は、実行しているよりも前のバージョンの hibernate に対して構築されており、hibernate API が変更されている可能性があります。ehcache 依存関係を追加しましたか? それとも休止状態もアップグレードされましたか?

于 2010-09-02T16:11:43.353 に答える
0

アーティファクトhibernate-ehcacheは特定の Hibernate アーティファクトを追加しないため、それが本当に問題の根本原因であるかどうかはわかりません。ただし、(liquidbase の前に宣言することによって) クラスパスの順序を変更し、問題を明らかにした可能性があります。後で(pom.xmlで)宣言してみてください。

で JV​​M を実行して-Xverify:all、より有用なメッセージが表示されるかどうかを確認することもできます。

または、Hibernate 3.5.x に対して liquibase を再コンパイルします。

于 2010-09-02T16:56:39.257 に答える