Unter Tomcat mit java.lang.NoClassDefFoundError beim Zugriff auf ein servlet?
Ich Schreibe eine web-Anwendung in Eclipse, und ich bin mit dem XStream Serialisierungs-Bibliothek für die Erstellung Meiner JSON.
Habe ich gekapselten Code, baut das JSON in eine Klasse, die aufgerufen wird, durch meine servelet. Dann gekapselt Klasse hat eine main-Methode zum testen und wenn ich es laufen lasse, scheint alles gut zu funktionieren.
Jedoch wenn ich den Aufruf der Klasse von meinem servelet ich eine java.lang.NoClassDefFoundError
Fehler, sayying, dass habe ich nicht geladen, die XStream Bibliotheken. Ich nehme an, ich habe meine build-Pfad falsch ist, aber ich habe die XStream Bibliotheken in den build-Pfad für das Projekt, so weit ich weiß, sollte es funktionieren.
Was wahrscheinlich läuft hier falsch?
Folgenden ist die genaue Ausnahme:
java.lang.ClassNotFoundException: com.thoughtworks.xstream.io.HierarchicalStreamDriver
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at SecurePaymentAjaxData.doPost(SecurePaymentAjaxData.java:44)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Und hier ist das maßgeblich code mit dem xstream-Klasse:
XStream xstream = new XStream(new JettisonMappedXmlDriver());
xstream.setMode(XStream.NO_REFERENCES);
xstream.alias("CallDataUpdate", CallDataUpdate.class);
xstream.alias("CardStatus", CardStatus.class);
String jsonData = xstream.toXML(updateData);
Ich betonen, dass dieser code funktioniert Prima, wenn die Ausführung einer java-Anwendung, ich bin sicher, es ist etwas zu tun mit dem laden der Bibliotheken, ich weiß nur nicht, wo ich schief gegangen ist.
InformationsquelleAutor Omar Kooheji | 2009-05-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vergessen Sie nicht, dass es einen Unterschied zwischen dem, wie Sie bauen und wie Sie bereitstellen. Das heißt, Sie können Gebäude gegen XStream, aber Sie sollten auch das Paket, auf das es in der .war-Datei für die Bereitstellung.
Explodieren Ihre resultierende .war-Datei (
jar tvf {filename}
um den Inhalt zu sehen) und schauen, ob es dort (a .jar-Datei unterWEB-INF/lib
). Ich vermute, es ist nicht.InformationsquelleAutor Brian Agnew
Fand ich das Problem:
Wenn du mit der rechten Maustaste auf das Projekt und wählen Sie Eigenschaften Sie können die "Java EE Module dependencies" gehören die Module, die Sie verwenden.
Hey Presto, es funktioniert.
Beachten Sie, dass diese Funktion heißt jetzt "Deployment Assembly" finden Sie unter stackoverflow.com/questions/3365369/...
InformationsquelleAutor Omar Kooheji
Java EE Module Dependencies zu sein scheinen dem Weg zu gehen. Jedoch, Menüs, Namen geändert in Eclipse Helios: das Menü ist jetzt unter "Deployment Assembly".
InformationsquelleAutor Florent
Eine einfache Fehler zu machen, ist die misname das Verzeichnis WEB_INF, ich habe es mit dem Namen libs statt lib kompiliert einwandfrei, aber tomcat wirft Fehler.
InformationsquelleAutor