2012-04-19 33 views
57

Tôi đang tìm kiếm giải pháp cho vấn đề này nhưng có vẻ khó khăn. Tôi có dự án appengine làm việc với một servlet xử lý đăng ký. Khi tôi cố gắng để gọi servlet này tôi có báo cáo log này:Lỗi 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

Chia sẻ những gì tôi đã quan sát ............ Tôi có cùng ngoại lệ ngay cả khi tôi đã có xml-apis-1.3.02 trong WEB_INF/lib. Tôi chỉ cần chuyển sang sử dụng phiên bản mới của jar này xml-apis-1.4.01 và nó hoạt động tốt. – veer7

Trả lời

23

Có thể có một số vấn đề tồn tại với các phân tích cú pháp Xerces trên game. Xem http://code.google.com/p/googleappengine/issues/detail?id=1367

Có thể giải pháp thay thế là đảm bảo rằng tất cả các lọ Xerces (bao gồm xml-apis.jar) đều nằm trong WEB-INF/lib của bạn.

+0

Rất cám ơn, bao gồm xml-apis.jar trong WEB-INF/LIB đã hoạt động và đã giải quyết được vấn đề! – LucasJJ

+0

Có lý do nào đó Xerces || NekoHtmlParser jar không được nhập !! – danielad

168
  • MAVEN SOLUTION:

Tại pom.xml, thiết lập "xml-apis" phụ thuộc vào phiên bản 1.4.01:

<dependency> 
    <groupId>xml-apis</groupId> 
    <artifactId>xml-apis</artifactId> 
    <version>1.4.01</version> 
</dependency> 
  • GIẢI PHÁP CHO MỌI NGƯỜI KHÁC:

Nếu không sử dụng maven, bạn có thể thêm thư viện xml-apis theo cách thủ công, phiên bản 1.4.01. Bạn sẽ tìm thấy các lọ bên trong gói nhị phân xml-commons, có tên "XML Commons External 1.4.01", và bạn có thể tải xuống ở đây: http://xerces.apache.org/mirrors.cgi.

Cuối cùng, biên dịch và thực thi ứng dụng/dự án java của bạn với phiên bản thư viện này.

  • Giải thích:

Phiên bản 1.4.01 của thư viện xml-apis, bao gồm các lớp ElementTraversal yêu cầu. Các phiên bản khác như 2.0.0, 1.0.0, v.v. không bao gồm nó và ứng dụng không thành công khi biên dịch.

+9

Tôi gặp sự cố tương tự với Selenium WebDriver. Thêm xml-apis vào dự án đã sửa nó. Cảm ơn. –

+0

Tomcat 7 maven plugin có cùng một vấn đề, sau khi tôi thêm phụ thuộc xml-apis nó hoạt động tốt – webjockey

+0

Có vẻ phiên bản 2.0.2 được phát hành với phiên bản không chính xác vô tình và sau đó họ đã chuyển bản phát hành đó sang phiên bản chính xác. Xem http://mvnrepository.com/artifact/xml-apis/xml-apis/2.0.2 (2.0.2 phát hành năm 2002, nhưng gần đây nhất chính xác 1.4.01 được phát hành vào năm 2009) – manikanta

1

Sự cố của bạn có thể được giải quyết bằng cách cập nhật lên phiên bản 2.11.0.SP5, đã có lớp ElementTraversal.

Các vấn đề liên quan