8

我发现“Hibernate 不能与 JAX-RS 的参考实现结合使用”。在链接http://lists.jboss.org/pipermail/hibernate-issues/2009-May/015628.html

所以我无法将 JAX-RS (jersey) 与休眠结合起来,有没有人知道解决这个问题的方法?

4

4 回答 4

13

万恶之源是cglib。将 cglib-2.1.3.jar 替换为cglib-nodep-2.1_3.jar并删除 hibernate 的 asm*.jar 文件。

于 2009-06-10T08:56:17.507 回答
5

JerseyJava REST框架)与 Hibernate 结合使用需要对 Maven 的pom.xml文件进行一些调整。问题是 Hibernate 使用的与Jersey使用ASM 1.5.3的不兼容。ASM 3.1

您需要做的是从Hibernate中排除一些传递依赖项:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate</artifactId>
    <version>3.2.6.ga</version>
    <exclusions>
        <exclusion>
            <groupId>asm</groupId>
            <artifactId>asm</artifactId>
        </exclusion>
        <exclusion>
            <groupId>asm</groupId>
            <artifactId>asm-attrs</artifactId>
        </exclusion>
        <exclusion>
            <groupId>cglib</groupId>
            <artifactId>cglib</artifactId>
        </exclusion>
    </exclusions>
</dependency>

然后,您需要包含正确版本的 ASM:

<dependency>
    <groupId>asm</groupId>
    <artifactId>asm</artifactId>
    <version>3.1</version>
</dependency>

最后,您需要包含一个 nodep 版本的 CGLib,它从 ASM 版本 1.5.3 重新打包类:

<dependency>
    <groupId>cglib</groupId>
    <artifactId>cglib-nodep</artifactId>
    <version>2.1_3</version>
</dependency>

来源:http ://blog.idm.fr/2009/04/jersey-hibernate-conflict.html

于 2012-12-05T10:55:24.263 回答
3

解决方案:ASM 3.1 与 HIbernate 和 JAX-RS 的兼容性问题

  • 删除以下 jars
    1 asm-attrs.jar
    2 asm.jar
    3 cglib-2.1.3.jar

  • 添加下面的罐子

1 asm-3.1.jar
2 cglib-nodep-2.1_3.jar

于 2014-11-07T12:29:28.027 回答
3

升级到 Hibernate 3.3.2 或更高版本。

如果您点击生成消息的错误报告的链接,则表明最新版本的 Hibernate(自 3.3.2 起)使用不同的字节码操作包(Javassist),这消除了导致问题的 ASM 冲突。

于 2009-06-09T12:18:36.177 回答