Estoy escribiendo una aplicación web en Eclipse, y estoy usando la Biblioteca de serialización XStream para generar My JSON.En Tomcat java.lang.NoClassDefFoundError al acceder a un servlet?
He encapsulado el código que crea el JSON en una clase a la que llama mi servelet. Entonces la clase encapsulada tiene un método principal para probar y cuando lo ejecuto, todo parece funcionar bien.
Sin embargo, cuando uso la llamada a la clase de mi servidor, recibo un error java.lang.NoClassDefFoundError
, diciendo que no he cargado las bibliotecas XStream. Supongo que tengo mi ruta de compilación incorrecta, pero he establecido las bibliotecas XStream para que estén en la ruta de compilación para el proyecto, por lo que sé que debería funcionar.
¿Qué es probable que salga mal aquí?
que sigue es la excepción exacta:
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)
Y aquí es el código relavant que utiliza la clase xstream:
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);
hago hincapié en que este código funciona bien cuando se ejecuta como una aplicación Java, Estoy seguro de que tiene algo que ver con cargar las bibliotecas, simplemente no sé dónde me he equivocado.
¿El paquete está en la carpeta WEB-INF/lib de su WAR? –