1

プロジェクトで問題が発生しています。JBoss7.1.1 を使用しており、バージョン 4.1 の envers を使用したいと考えています。バージョン 4.1 の Envers には、バージョン 4.1 の Hibernate が必要です。残念ながら、jboss 7.1.1 には古い hibernate および Envers モジュールが含まれています。

2 つのオプションがあります。

JBoss のモジュールを変更します (新しい envers と hibernate を配置します)。問題は、このアプリケーションを実行するすべての jboss をそのプロジェクトに合わせて「調整」する必要があることです (少し面倒です)。

または:

JBoss モジュールを除外し、WAR 内の WEB-INF/lib からライブラリを使用します。以下を使用してモジュールを除外しました。

<jboss-deployment-structure>
    <ear-subdeployments-isolated>true</ear-subdeployments-isolated>
    <deployment>
        <!-- Exclusions allow you to prevent the server from automatically adding some dependencies     -->
        <exclusions>
            <module name="org.hibernate"/>
            <module name="org.hibernate.envers"/>
        </exclusions>
    </deployment>
</jboss-deployment-structure>

Mavenの依存関係を提供からコンパイルに変更しましたが、動作するはずですよね?

しかし今、私はこの例外を受けています:

Caused by: java.lang.IllegalArgumentException: interface org.hibernate.annotations.Columns is not visible from class loader
    at java.lang.reflect.Proxy.getProxyClass(Proxy.java:353) [classes.jar:1.6.0_35]
    at org.hibernate.annotations.common.annotationfactory.AnnotationFactory.create(AnnotationFactory.java:46)
    at org.hibernate.cfg.annotations.reflection.JPAOverridenAnnotationReader.buildColumns(JPAOverridenAnnotationReader.java:1383)

それを修正する方法についてのアイデアはありますか?

4

1 に答える 1

0

アプリに異なるバージョンの Hibernate を使用しないことを強くお勧めします。

hibernate 4.1.3 およびその他の関連するものをダウンロードし、jar を置き換え、module.xml を正しい jar に更新することをお勧めします。Hibernate 4.1.3 Core および Envers で 7.1.1 を使用します。

Envers module.xml の置き換え

  <module xmlns="urn:jboss:module:1.1" name="org.hibernate.envers">
    <resources>
      <resource-root path="hibernate-envers-4.1.3.Final.jar"/>
      <!-- Insert resources here -->
    </resources>

  <dependencies>
    <module name="org.hibernate"/>
    <module name="org.jboss.logging"/>
    <module name="org.dom4j"/>
    <module name="javax.api"/>
    <module name="javax.persistence.api"/>
    <module name="javax.transaction.api"/>
    <module name="org.hibernate.commons-annotations"/>
    <module name="org.javassist"/>
   </dependencies>
 </module>

Change also org/hibernate/main/ (we use hibernate core 4.1.3.Final)
Change org/hibernate/validator/main ( we use hibernate validator-4.2.0.Final)
Change org/hibernate/commons-annotations (we use 4.0.1 Final) 

それだけのはずです..依存関係の問題が発生した場合はお知らせください..

-マディ

于 2012-10-09T15:50:51.593 に答える