Jetty 9.0 eingebettet und RestEasy 3.0 wirft weiterhin NoSuchMethodError

8

Heute hatte ich die Idee, eine sehr einfache Webanwendung zu erstellen, die von einem REST-Backend betrieben wird. Da ich einen sehr leichten Server wollte, habe ich angefangen, Jetty zu betrachten. Und da ich eine andere JAX-RS-Implementierung als Jersey ausprobieren wollte, schaute ich auf RestEasy. Ich dachte, diese 2 wären einfach zu implementieren. Ich habe mich geirrt ...

Ich habe die grundlegenden Jetty-Server- und Servlet-Abhängigkeiten importiert, da ich dachte, dass dies die einzigen Serveranforderungen für einen einfachen (REST-only) Jetty-Server wären (ich habe versucht, die Webapp-Abhängigkeit zu verwenden; dies hat die gleichen Fehler verursacht).

%Vor%

Dann habe ich die grundlegenden RestEasy-Abhängigkeiten importiert.

%Vor%

Hauptmethode:

%Vor%

ExampleResources:

%Vor%

BeispielResourceImpl:

%Vor%

Wenn ich zum webapge gehe, bekomme ich die folgende Spur:

%Vor%

Normalerweise würde das bedeuten, dass ich eine Abhängigkeit vergessen habe, aber ich habe wirklich keine Ahnung, was los ist.

    
Wouter 12.07.2013, 15:33
quelle

4 Antworten

6

Ich bin gerade auf dasselbe Problem gestoßen. Die Lösung bestand darin, die Jaxrs-API explizit als erste Abhängigkeit in der Liste der Abhängigkeiten hinzuzufügen.

%Vor%

Jackson verwendet die jsr311-API, die dieselbe Response -Klasse bereitstellt, die von der Klasse BuiltResponse verwendet wird. Leider enthält diese Response nicht die Methode getHeaders() . Obwohl die Abhängigkeit aufgelöst wird, verwendet sie eine falsche Klasse. Wenn die Jackson-Abhängigkeit irgendwie vor dem Rasteasy steht, wird die obige Ausnahme ausgelöst.

    
allprog 31.10.2013 14:14
quelle
2

Ich hatte das gleiche Problem. Zuerst arbeitete es mit JAX-RS 2 und dann wurde es nach JAX-RS 3 migriert, also dachte ich, dass es etwas damit zu tun hat. Nachdem ich nicht versucht habe, JBoss mit JAX-RS 3 aus der App über Maven und jboss-deployment-structure.xml zu erreichen, habe ich versucht, JBoss-Module zu aktualisieren, was mit folgendem Verfahren geschehen kann:

  

3.1. Aktualisieren von Resteasy innerhalb von JBoss AS 7   Rasteasy wird mit JBoss AS 7 gebündelt. Sie werden wahrscheinlich Resteasy in AS7 aktualisieren müssen.   Die Resteasy-Distribution wird mit einer Zip-Datei namens resteasy-jboss- modles-3.0.1.Final.zip geliefert.   Entpacken Sie diese Datei mit dem Modul / Verzeichnis der JBoss AS7-Distribution. Dies wird überschrieben   einige der vorhandenen Dateien dort.

Quelle: Ссылка

Ich hoffe, es hilft!

    
Guatom 26.07.2013 03:34
quelle
0

Ich bin auch auf dieses Problem gestoßen und es hat ewig gedauert, bis ich herausgefunden habe, wie ich es lösen kann. Kevin Day hatte Recht. Das Problem war, dass eine der Abhängigkeiten in meinem POM indirekt in Jackson gezogen wurde und diese Abhängigkeit in der POM-Datei vor der Jaxrs-Abhängigkeit platziert wurde. Eine Lösung bestand darin, einfach die Jaxrs-Abhängigkeit an den Anfang der POM-Datei zu verschieben, damit sie vor Jackson aufgenommen wurde.

    
james sirota 26.09.2014 06:10
quelle
0

Hatte das gleiche Problem beim Versuch, einen Jax-Rs (mit Resteasy) auf Glassfish 3.1.2.2 zu implementieren. Versucht zu lösen, was die Inkonsistenz verursachte, dauerte stundenlang und konnte es am Ende nicht finden - Glasfischverhalten wurde immer seltsamer.

Meine Empfehlung für jeden, der versucht, auf gf resesteady zu laufen: hört auf und benutzt Jersey.

    
icyerasor 20.08.2015 13:53
quelle