Проблема совместимости ASM 3.1 и HIbernate и JAX-RS

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

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

4 ответа

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

Использование Jersey (среда Java REST) в сочетании с 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

РЕШЕНИЕ: проблема совместимости 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

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

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

Другие вопросы по тегам