Проблема совместимости 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, вызвавший проблему.