2009-06-09 3 views
7

Ich habe herausgefunden, dass "Hibernate nicht mit der Referenzimplementierung von JAX-RS kombiniert werden kann." auf dem Link http://lists.jboss.org/pipermail/hibernate-issues/2009-May/015628.htmlKompatibilitätsproblem von ASM 3.1 und HIbernate und JAX-RS

So kann ich nicht JAX-RS (Trikot) mit Winterschlaf kombinieren, weiß jemand eine Arbeit dafür?

+0

Haben Sie jemals eine Lösung für diese finden? Ich stoße jetzt genau darauf. Ich verwende Hibernate 3.2 Core, Annotations und Entity Manager. Hibernate stirbt, wenn ich versuche, JAX-RS-Bibliotheken hinzuzufügen. Vielen Dank. – kmehta

Antwort

3

Upgrade auf einen Hibernate 3.3.2 oder höher.

Wenn Sie den Link zum bug report folgen, die Nachricht von erstellt wurde, zeigt es an, dass die neuesten Versionen von Hibernate (seit 3.3.2) eine andere Bytecode Manipulation Paket verwenden (Javassist), die den Konflikt über ASM beseitigt, die verursacht das Problem.

+1

HIbernate 3.3.2 hat nicht geholfen, ich denke, wir müssen noch Hibernate anweisen, javassist in der Datei hibernate.properties zu verwenden, wo mein Projekt die Datei hibernate.cfg.xml verwendet, und wir können javassist in der XML-Datei nicht erzwingen. –

13

Die Wurzel des Bösen ist cglib. Ersetzen Sie cglib-2.1.3.jar durch cglib-nodep-2.1_3.jar und löschen Sie die asm * .jar-Dateien von hibernate.

+0

Diese Antwort sollte als korrekte Antwort markiert werden –

+0

funktioniert nicht für mich ... bekommen 'java.lang.NoClassDefFoundError: org/objectweb/asm/ClassVisitor' – aps109

+0

Funktioniert noch .. Mit asm-3.3.1 – Jaden

4

Mit Jersey (die Java REST Framework) in Verbindung mit Hibernate erfordert einige Optimierungen von der Maven pom.xml Datei. Das Problem ist, dass Hibernate ASM 1.5.3 verwendet, das nicht kompatibel mit ASM 3.1 ist, das von Jersey verwendet wird.

Was Sie tun müssen, ist, einige transitive Abhängigkeiten von Hibernate ausschließen:

<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> 

Dann müssen Sie die richtige Version von ASM sind:

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

Schließlich müssen Sie enthält eine nodep-Version des CGLib, der Klassen aus ASM Version 1.5.3 neu packt:

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

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

1

LÖSUNG: Kompatibilitätsproblem von ASM 3.1 und Hibernate und JAX-RS

  • Entfernen Sie die folgenden Gläser
    1 asm-attrs.jar
    2 asm. Gefäß
    3 cglib-2.1.3.jar

  • Fügen Sie die unten jar

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