1

我的项目有问题。我们正在使用 JBoss7.1.1,我们想在 4.1 版本中使用 envers。4.1 版中的 Envers 需要 4.1 版中的 Hibernate。不幸的是,jboss 7.1.1 包含较旧的 hibernate 和 Envers 模块。

我有两个选择:

更改 JBoss 中的模块(放在那里新的环境和休眠)。问题是每个运行这个应用程序的 jboss 都必须为那个项目“调整”(有点痛苦)。

或者:

在 war 中排除 JBoss 模块并使用来自 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 替换 jar 和更新 module.xml。我们将 7.1.1 与 Hibernate 4.1.3 Core 和 Envers 一起使用。

替换 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 回答