Nice programing

AppEngine 오류 [java.lang.NoClassDefFoundError : org / w3c / dom / ElementTraversal]

nicepro 2020. 12. 2. 21:57
반응형

AppEngine 오류 [java.lang.NoClassDefFoundError : org / w3c / dom / ElementTraversal]


이 문제에 대한 해결책을 찾고 있었지만 어려운 것 같습니다. 등록을 처리하는 서블릿으로 작업하는 appengine 프로젝트가 있습니다. 이 서블릿을 호출하려고하면 다음 로그 보고서가 있습니다.

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: xxxxxxxxxxxx@xxxx  //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 

GAE의 Xerces 파서에 기존 문제가있을 수 있습니다. http://code.google.com/p/googleappengine/issues/detail?id=1367 참조

해결 방법은 모든 Xerces jar (xml-apis.jar 포함)가 WEB-INF / lib에 있는지 확인하는 것입니다.


  • 메이븐 솔루션 :

pom.xml에서 "xml-apis"종속성을 버전 1.4.01로 설정합니다.

<dependency>
    <groupId>xml-apis</groupId>
    <artifactId>xml-apis</artifactId>
    <version>1.4.01</version>
</dependency>
  • 다른 모든 사용자를위한 솔루션 :

If not using maven, you can manually add the xml-apis library, version 1.4.01. You will find the jars inside the xml-commons binary package, named "XML Commons External 1.4.01", and you can download it here: http://xerces.apache.org/mirrors.cgi.

Finally, compile and execute your java application/project with this version of the library.

  • Explanation:

The 1.4.01 version of the xml-apis library, includes the required ElementTraversal class. Other versions like 2.0.0, 1.0.0, etc. do not include it, and the application fails while compiling.


Your issue can be resolved by updating to version 2.11.0.SP5, which already contains the class ElementTraversal.

참고URL : https://stackoverflow.com/questions/10234201/appengine-error-java-lang-noclassdeffounderror-org-w3c-dom-elementtraversal

반응형