Ich verwende Eclipse Luna (Versionen 4.4.2) und Glassfish 4, um eine REST-Webanwendung mit JAX-RS zu erstellen.Klasse nicht gefunden, wenn JAX-RS mit Eclipse und Glassfish verwendet wird
Das folgende Stück Code, der nur eine sehr einfache Post an das REST-API ist, die zuvor ganz gut funktioniert, begann einen sehr seltsamen Fehler werfen:
@POST
public Response addToWatchlist(WatchlistEntry watchlistentry)
{
return Response.ok(watchlist_service.addToWatchlist(watchlistentry).toString()).build();
}
Der Fehler ist unter:
Warning: StandardWrapperValve[Jersey Web Application]: Servlet.service() for servlet Jersey Web Application threw exception
java.lang.ClassNotFoundException: javax.xml.parsers.ParserConfigurationException not found by org.eclipse.persistence.moxy
Alles, was ich in der Lage gewesen, darüber zu erfahren, ist diese Webseite: https://java.net/jira/browse/JERSEY-2888
Einer der Kommentare sagt diese wurde in EclipseLink 2.6.1 und Jersey 2.19 behoben.
Ich bin ziemlich neu in der Verwendung von MAVEN und Eclipse - vorausgesetzt, das obige ist richtig, wie bekomme ich mein Maven-Projekt in Eclipse, um die Jersey-Version zu aktualisieren? Wie aktualisiere ich auch die EclipseLink-Version? Ihre Seite scheint nur die Version 2.6.0 zu haben: http://www.eclipse.org/eclipselink/#download
Ich gehe davon aus, dass all das durch Eclipse selbst gemacht werden kann?
Alle Hilfe geschätzt!
EDIT 1: Es scheint wie Eclipse 2.6.1 wurde am 15. Oktober 2015 veröffentlicht wurde, wie Sie hier sehen können: http://www.eclipse.org/eclipselink/releases/
Doch wie Sie hier sehen können, ist es nicht zu haben scheint in "Eclipse" für "Hilfe -> Update-Software" eingebaut: http://download.eclipse.org/rt/eclipselink/updates/
Das ist sehr ärgerlich.
Ich baue meine REST-Website und kein PUT oder POST funktioniert aufgrund dieses Fehlers.
Kann jemand 2.6.1 arbeiten? Ich benutze ein Maven Jersey-Quickstart-Webapp-Projekt.
Dieser Fehler ist ein königlicher Schmerz im Gesicht.
EDIT 2: Ich habe einen Hack arbeiten heute. Wenn ich programmtically überprüfen, welche Version von Eclipse wird wie unten zur Laufzeit verwendet wird, sagt es mir, es ist Version 2.6.1, auch wenn der Fehler bleibt:
Class<?> myClass = Class.forName("org.eclipse.persistence.Version");
Method myMethod = myClass.getMethod("getVersion");
String version = myMethod.invoke(null).toString();
System.out.println("version = " + version);
In einer verwandten Frage (How to find what version of EclipseLink my Eclipse Project is using?) Ich fand heraus, wie um die tatsächlichen JAR-Dateien zu finden, die Glassfish für Eclipse verwendet. Sie befinden sich im Verzeichnis glassfish/modules. In der Datei org.eclipse.persistence.core.jar befindet sich eine readme.html, die Ihnen die Version von eclipselink mitteilt, die glassfish verwendet. Für mich war es 2,6.
Ich habe die org.eclipse.persistence.core.jar und die org.eclipse.persistence.moxy.jar Datei mit den neuesten Versionen von der Maven-Site manuell aktualisiert. Während das ziemlich hacky ist, weil ich nicht weiß, was sonst davon betroffen wird, geht es über dieses Problem hinaus. Wenn ich den richtigen Weg finde, um dies zu tun, werde ich unten eine Antwort schreiben, für alle und jeden.
Ich bin ziemlich sicher, dass die Updates mich 2.6.1 (aber nicht 2.6.2) spielen, als ich sie ausprobierte Feb-2016. –
Ja - wenn ich versuche, Code in meinem Projekt zu sehen, um zu sehen, welche Version von Eclipselink es verwendet, heißt es 2.6.1. Aber wenn ich die tatsächliche org.eclipse.persistence.core.jar im glassfish/modules Verzeichnis überprüfe, sagt readme.html 2.6. Und ich habe immer noch den Fehler aufgetreten! –
Sicher, die Updates in Eclipse sind nicht die gleichen wie die Version, die Glassfish verwendet. –