2012-04-19 5 views
57

cercavo una soluzione per questo problema ma sembra difficile. Ho un progetto appengine che funziona con un servlet che gestisce la registrazione. Quando provo a chiamare questa servlet ho questo rapporto di registro:Errore AppEngine [java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal]

012-04-19 10:31:06.816 /register 500 90ms 0kb Apache-HttpClient/UNAVAILABLE (java 1.4) 
ip - gecodroidtest [19/Apr/2012:10:31:06 -0700] "POST /register HTTP/1.1" 500 0 - "Apache-HttpClient/UNAVAILABLE (java 1.4)" "cloudnotifyit.appspot.com" ms=90 cpu_ms=58 api_cpu_ms=0 cpm_usd=0.001738 instance=00c61b117c772731eb45290bfcb07750c0505f 
W 2012-04-19 10:31:06.794 
com.cloudnotify.server.servlet.RequestInfo processRequest: [email protected] //just for me 
W 2012-04-19 10:31:06.810 
Error for /register 
java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal 
    at com.google.appengine.runtime.Request.process-240c2ffe1bf8ddba(Request.java) 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:634) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:277) 
    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
    at org.apache.xerces.parsers.AbstractDOMParser.startDocument(Unknown Source) 
    at org.apache.xerces.impl.dtd.XMLDTDValidator.startDocument(Unknown Source) 
    at org.apache.xerces.impl.XMLDocumentScannerImpl.startEntity(Unknown Source) 
    at org.apache.xerces.impl.XMLVersionDetector.startDocumentParsing(Unknown Source) 
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) 
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) 
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) 
    at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) 
    at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source) 
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:121) 
    at javax.jdo.JDOHelper.readNamedPMFProperties(JDOHelper.java:1407) 
    at javax.jdo.JDOHelper.getNamedPMFProperties(JDOHelper.java:1286) 
    at javax.jdo.JDOHelper.getPropertiesFromJdoconfig(JDOHelper.java:1232) 
    at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:1079) 
    at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:914) 
    at com.cloudnotify.server.c2dm.C2DMessaging.getPMF(C2DMessaging.java:103) 
    at com.cloudnotify.server.servlet.RequestInfo.initDevices(RequestInfo.java:225) 
    at com.cloudnotify.server.servlet.RequestInfo.processRequest(RequestInfo.java:183) 
    at com.cloudnotify.server.servlet.RegisterServlet.doPost(RegisterServlet.java:100) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at org.mortbay.jetty.Server.handle(Server.java:326) 
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) 
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
    at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:449) 
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:455) 
    at com.google.tracing.TraceContext.runInContext(TraceContext.java:695) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:333) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325) 
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453) 
    at java.lang.Thread.run(Thread.java:679) 
Caused by: java.lang.ClassNotFoundException: org.w3c.dom.ElementTraversal 
    at com.google.appengine.runtime.Request.process-240c2ffe1bf8ddba(Request.java) 
    ... 44 more 
C 2012-04-19 10:31:06.812 
Uncaught exception from servlet 
java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal 
    at com.google.appengine.runtime.Request.process-240c2ffe1bf8ddba(Request.java) 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:634) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:277) 
    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
    at org.apache.xerces.parsers.AbstractDOMParser.startDocument(Unknown Source) 
    at org.apache.xerces.impl.dtd.XMLDTDValidator.startDocument(Unknown Source) 
    at org.apache.xerces.impl.XMLDocumentScannerImpl.startEntity(Unknown Source) 
    at org.apache.xerces.impl.XMLVersionDetector.startDocumentParsing(Unknown Source) 
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) 
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) 
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) 
    at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) 
    at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source) 
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:121) 
    at javax.jdo.JDOHelper.readNamedPMFProperties(JDOHelper.java:1407) 
    at javax.jdo.JDOHelper.getNamedPMFProperties(JDOHelper.java:1286) 
    at javax.jdo.JDOHelper.getPropertiesFromJdoconfig(JDOHelper.java:1232) 
    at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:1079) 
    at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:914) 
    at com.cloudnotify.server.c2dm.C2DMessaging.getPMF(C2DMessaging.java:103) 
    at com.cloudnotify.server.servlet.RequestInfo.initDevices(RequestInfo.java:225) 
    at com.cloudnotify.server.servlet.RequestInfo.processRequest(RequestInfo.java:183) 
    at com.cloudnotify.server.servlet.RegisterServlet.doPost(RegisterServlet.java:100) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at org.mortbay.jetty.Server.handle(Server.java:326) 
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) 
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
    at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:449) 
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:455) 
    at com.google.tracing.TraceContext.runInContext(TraceContext.java:695) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:333) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325) 
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453) 
    at java.lang.Thread.run(Thread.java:679) 
Caused by: java.lang.ClassNotFoundException: org.w3c.dom.ElementTraversal 
    at com.google.appengine.runtime.Request.process-240c2ffe1bf8ddba(Request.java) 
    ... 44 more 


Thanks all 
+1

Condividere ciò che ho osservato ............ Ho ottenuto la stessa eccezione anche quando avevo xml-apis-1.3.02 in WEB_INF/lib. Ho appena passato ad usare la nuova versione di questo jar xml-apis-1.4.01 e ha funzionato bene. – veer7

risposta

23

Ci può essere qualche problema esistente con il parser Xerces su GAE. Vedi http://code.google.com/p/googleappengine/issues/detail?id=1367

Forse la soluzione è assicurarsi che tutti i vasi di Xerces (incluso xml-apis.jar) siano nel WEB-INF/lib.

+0

Molte grazie, incluso xml-apis.jar in WEB-INF/LIB ha funzionato e ha risolto il problema! – LucasJJ

+0

Sì per qualche motivo Xerces || Barattolo NekoHtmlParser non importato !! – danielad

168
  • MAVEN SOLUZIONE:

A pom.xml, impostare "xml-apis" dipendenza alla versione 1.4.01:

<dependency> 
    <groupId>xml-apis</groupId> 
    <artifactId>xml-apis</artifactId> 
    <version>1.4.01</version> 
</dependency> 
  • SOLUZIONE per tutti gli altri:

Se non si utilizza Maven, è possibile aggiungere manualmente la libreria xml-apis, versione 1.4.01. Troverete i vasi all'interno del pacchetto binario xml-commons, denominato "XML Commons External 1.4.01", e potete scaricarlo qui: http://xerces.apache.org/mirrors.cgi.

Infine, compila ed esegui la tua applicazione/progetto java con questa versione della libreria.

  • Spiegazione:

La versione 1.4.01 della libreria xml-apis, include la classe ElementTraversal richiesto. Altre versioni come 2.0.0, 1.0.0, ecc. Non lo includono e l'applicazione fallisce durante la compilazione.

+9

Ho avuto un problema simile con Selenium WebDriver. Aggiungendo xml-apis al progetto è stato corretto. Grazie. –

+0

Tomcat 7 Il plug-in Maven ha avuto lo stesso problema, dopo aver aggiunto la dipendenza xml-apis sembra funzionare correttamente – webjockey

+0

Sembra che la versione 2.0.2 sia stata rilasciata accidentalmente e che in seguito abbiano spostato quella versione per correggere la versione. Vedi http://mvnrepository.com/artifact/xml-apis/xml-apis/2.0.2 (versione 2.0.2 rilasciata nel 2002, ma la più recente corretta 1.4.01 è stata rilasciata nel 2009) – manikanta

1

Il problema può essere risolto aggiornando alla versione 2.11.0.SP5, che contiene già la classe ElementTraversal.

Problemi correlati