java.lang.NoClassDefFoundError

时间:2011-01-08 22:26:18

标签: java eclipse tomcat servlets

一切正常,但现在我无法运行我的应用程序了。出于某种原因,在Eclipse中还没有找到javax。*,导入很好......

exception 

javax.servlet.ServletException: Error allocating a servlet instance
 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
 org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
 java.lang.Thread.run(Thread.java:619)


root cause 

java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet
 java.lang.ClassLoader.defineClass1(Native Method)
 java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
 java.lang.ClassLoader.defineClass(ClassLoader.java:616)
 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
 java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
 java.net.URLClassLoader.access$000(URLClassLoader.java:58)
 java.net.URLClassLoader$1.run(URLClassLoader.java:197)
 java.security.AccessController.doPrivileged(Native Method)
 java.net.URLClassLoader.findClass(URLClassLoader.java:190)
 java.lang.ClassLoader.loadClass(ClassLoader.java:307)
 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
 java.lang.ClassLoader.loadClass(ClassLoader.java:248)
 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1560)
 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
 org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
 java.lang.Thread.run(Thread.java:619)


root cause 

java.lang.ClassNotFoundException: javax.servlet.http.HttpServlet
 java.net.URLClassLoader$1.run(URLClassLoader.java:202)
 java.security.AccessController.doPrivileged(Native Method)
 java.net.URLClassLoader.findClass(URLClassLoader.java:190)
 java.lang.ClassLoader.loadClass(ClassLoader.java:307)
 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
 java.lang.ClassLoader.loadClass(ClassLoader.java:248)
 java.lang.ClassLoader.defineClass1(Native Method)
 java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
 java.lang.ClassLoader.defineClass(ClassLoader.java:616)
 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
 java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
 java.net.URLClassLoader.access$000(URLClassLoader.java:58)
 java.net.URLClassLoader$1.run(URLClassLoader.java:197)
 java.security.AccessController.doPrivileged(Native Method)
 java.net.URLClassLoader.findClass(URLClassLoader.java:190)
 java.lang.ClassLoader.loadClass(ClassLoader.java:307)
 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
 java.lang.ClassLoader.loadClass(ClassLoader.java:248)
 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1560)
 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
 org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
 java.lang.Thread.run(Thread.java:619)

3 个答案:

答案 0 :(得分:1)

您通常在Apache Tomcat“Server Runtime”库中拥有servlet-api.jar。

在Elcipse中定义Server Runtime时,会定义此库,并在Tomcat中包含指向servet-api.jar的链接。

创建动态Web项目时,应该在Java Build Path中定义此库。检查您的项目是否具有此构建路径。

答案 1 :(得分:0)

servlet-api.jar添加到项目类路径中。 Servlet容器捆绑了这个jar,因此无需将其添加到lib

答案 2 :(得分:-2)

只需复制servlet-api jar,然后粘贴到webapps lib目录中。然后在eclipse中选择你的项目 - >鼠标右键单击 - >属性 - > java构建路径 - >选择标签“订单和导出” - >全选 - >光洁度。

现在只是使用eclipse来破坏你的应用程序。 我希望它能正常运作。 还有问题,然后告诉我,我会告诉你另一个解决方案