2013-04-04 55 views
2

我们得到一个java.lang.ClassNotFoundException: HttpServlet,其中包含一个在Eclipse中的Apache Tomcat服务器(v5.5)上运行的JSP项目。 Web-inf下的lib文件夹包含servelt-api jar。此外,我们已经导入了javax.servlet.http。*库。但我们仍然得到这个例外。Tomcat ClassNotFoundException for HttpServlet

package com.bean; 

import java.io.*; 
import java.util.*; 
import java.sql.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 
public class AdminLogin extends HttpServlet{ 
    ArrayList list=new ArrayList(); 

    public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{  

     try{ 
     response.setContentType("text/html");  
     PrintWriter out=response.getWriter();  
     String id=request.getParameter("user"); 
     String pass=request.getParameter("pass"); 
     System.out.println("ID==================>>"+id+"PASS========>>"+pass); 
     if(id.equalsIgnoreCase("admin")&&pass.equalsIgnoreCase("admin")) 
       { 
        response.sendRedirect("AdminPage.jsp");     
       } 
       else 
       { 
        response.sendRedirect("Failure.html");   
       }   
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 

     } 
} 

错误堆栈跟踪:

java.lang.NoClassDefFoundError: HttpServlet 
    java.lang.ClassLoader.defineClass1(Native Method) 
    java.lang.ClassLoader.defineClassCond(Unknown Source) 
    java.lang.ClassLoader.defineClass(Unknown Source) 
    java.security.SecureClassLoader.defineClass(Unknown Source) 
    org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1847) 
    org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:873) 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1326) 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1205) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151) 
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870) 
    org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) 
    org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) 
    org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) 
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685) 
    java.lang.Thread.run(Unknown Source) 
root cause 

java.lang.ClassNotFoundException: HttpServlet 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1359) 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1205) 
    java.lang.ClassLoader.defineClass1(Native Method) 
    java.lang.ClassLoader.defineClassCond(Unknown Source) 
    java.lang.ClassLoader.defineClass(Unknown Source) 
    java.security.SecureClassLoader.defineClass(Unknown Source) 
    org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1847) 
    org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:873) 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1326) 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1205) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151) 
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870) 
    org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) 
    org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) 
    org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) 
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685) 
    java.lang.Thread.run(Unknown Source) 

web.xml中:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
    <display-name>CarPooling</display-name> 
    <servlet> 
     <description> 
     </description> 
     <display-name>AdminLogin</display-name> 
     <servlet-name>AdminLogin</servlet-name> 
     <servlet-class>com.bean.AdminLogin</servlet-class> 
     </servlet> 
     <servlet> 
<servlet-name>employee</servlet-name> 
<servlet-class>com.bean.UserLogin</servlet-class> 
</servlet> 
    <servlet-mapping> 
     <servlet-name>AdminLogin</servlet-name> 
     <url-pattern>/demo</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
    <servlet-name>employee</servlet-name> 
<url-pattern>/login</url-pattern>        
</servlet-mapping> 
    <welcome-file-list> 
     <welcome-file>index.html</welcome-file> 
     <welcome-file>index.htm</welcome-file> 
     <welcome-file>index.jsp</welcome-file>  
    </welcome-file-list> 
</web-app> 

项目文件夹结构: enter image description here

+1

WEB-INF/lib文件夹不应该包含'servlet-api'。它由你的容器提供,并且已经在类路径中。 – NilsH 2013-04-04 05:23:02

+0

错误堆栈跟踪+'web.xml'也应该发布。 – SudoRahul 2013-04-04 05:23:26

+0

截图中的web-inf lib文件夹中没有servlet-api。如果您最近删除了它,请确保您执行干净的构建并清理重新部署。 – NilsH 2013-04-04 05:41:23

回答

3

WEB-INF下的lib文件夹中确实有servelt- api罐子。

没有必要将servlet-api.jar添加到Classpath中。 IDE会照顾到这一点。

检查您的Build Path是否包含Tomcat库。

右键单击项目 - >属性。

样品屏幕

enter image description here

1

1:右键点击你的项目 - > 2:构建路径 - > 3:库添加 - > 4:用户库 - > 5:点击用户库 - > 6:点击新的 - > 7:给你喜欢的库名 - > 8:点击“添加外部罐子” - > 9:浏览并选择你需要的任何jar文件。

,但在你的情况,如果你需要的servlet-api.jar文件它位于TomcatX.X/lib目录/ *。JAR

如果你缺少只是.jar文件考虑这个方案。对于核心库来说,这不是一个最佳实践。

如果您的电脑已正确配置,这些库文件将通过eclipse自动加载到您的项目中。

相关问题