2009-06-09 18 views
7

Descubrí que "Hibernate no se puede combinar con la implementación de referencia de JAX-RS". en el enlace http://lists.jboss.org/pipermail/hibernate-issues/2009-May/015628.htmlCompatibilidad Problema de ASM 3.1 y HIbernate y JAX-RS

Así que no puedo combinar JAX-RS (jersey) con Hibernate, ¿alguien sabe un poco de trabajo para esto?

+0

¿Alguna vez encontrar una solución a esto? Me estoy encontrando con esto ahora mismo. Estoy usando Hibernate 3.2 Core, Annotations y Entity Manager. Hibernate muere cuando intento agregar bibliotecas JAX-RS. Gracias. – kmehta

Respuesta

3

Actualice a Hibernate 3.3.2 o posterior.

Si sigue el enlace a la bug report ese mensaje se generó a partir, indica que las últimas versiones de Hibernate (desde 3.3.2) utilizan un paquete diferente manipulación de código de bytes (Javassist), lo que elimina el conflicto en torno ASM que causó el problema.

+1

HIbernate 3.3.2 no ayudó, creo que todavía necesitamos instruir a hibernate para usar javassist en el archivo hibernate.properties, donde mi proyecto utiliza el archivo hibernate.cfg.xml, y no podemos aplicar javassist en el archivo xml. –

13

La raíz del mal es cglib. Sustituya cglib-2.1.3.jar en cglib-nodep-2.1_3.jar y elimine los archivos asm * .jar de hibernate.

+0

Esta respuesta debe marcarse como la respuesta correcta –

+0

que no funciona para mí ... obteniendo 'java.lang.NoClassDefFoundError: org/objectweb/asm/ClassVisitor' – aps109

+0

Todavía funciona .. Con asm-3.3.1 – Jaden

4

Usando Jersey (el Java RESTO marco) en conjunción con Hibernate requiere algunos ajustes de pom.xml archivo de Maven. El problema es que Hibernate usa ASM 1.5.3 que es incompatible con ASM 3.1 utilizado por Jersey.

Lo que hay que hacer es excluir algunas dependencias transitivas de 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> 

Entonces, es necesario incluir la versión correcta de ASM:

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

Por último, es necesario incluye una versión nodep del CGLib que reempaca las clases de ASM versión 1.5.3:

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

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

1

SOLUCIÓN: Problema de compatibilidad de ASM 3.1 y Hibernate y JAX-RS

  • Eliminar los siguientes frascos
    1 asm-attrs.jar
    2 asm. jar
    3 cglib-2.1.3.jar

  • Añadir el siguiente frasco

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