我的项目有问题。我们正在使用 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)
关于如何解决它的任何想法?