Проблема совместимости ASM 3.1 и HIbernate и JAX-RS - PullRequest
8 голосов
/ 09 июня 2009

Я обнаружил, что «Hibernate не может сочетаться с эталонной реализацией JAX-RS». по ссылке http://lists.jboss.org/pipermail/hibernate-issues/2009-May/015628.html

Так что я не могу объединить JAX-RS (трикотаж) с Hibernate, кто-нибудь знает обойти это?

Ответы [ 4 ]

13 голосов
/ 10 июня 2009

корень зла - cglib. Замените cglib-2.1.3.jar на cglib-nodep-2.1_3.jar и удалите файлы asm * .jar в hibernate.

5 голосов
/ 05 декабря 2012

Использование Джерси ( Java REST framework) в сочетании с Hibernate требует некоторой настройки файла Maven pom.xml . Проблема в том, что Hibernate использует 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>

Наконец, вам нужно включить версию CGLib для nodep, которая переупаковывает классы из версии 1.5.3 ASM:

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

источник: http://blog.idm.fr/2009/04/jersey-hibernate-conflict.html

3 голосов
/ 09 июня 2009

Обновление до Hibernate 3.3.2 или новее.

Если вы перейдете по ссылке на отчет об ошибке , из которого было сгенерировано сообщение, это означает, что в последних версиях Hibernate (начиная с 3.3.2) используется другой пакет манипуляции с байт-кодом ( Javassist *) 1006 *), что устраняет конфликт из-за ASM, вызвавший проблему.

2 голосов
/ 07 ноября 2014

РЕШЕНИЕ: проблема совместимости ASM 3.1 и HIbernate и JAX-RS

  • Удалите следующие банки
    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

...