我的tomcat可以运行,但是却不能运行servlet,我自己在webapps里面新建了一个myapps的项目,目录结构是这样D:\tomcat\webapps\myapps\WEB-INF\classes,web.xml文件也配置了,是这样配置的
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   version="2.5">
<servlet>         <servlet-name> HelloServlet </servlet-name>         <servlet-class> HelloServlet </servlet-class>     </servlet> 
<servlet-mapping> 
<servlet-name> HelloServlet </servlet-name> 
<url-pattern> /servlet </url-pattern> 
</servlet-mapping> </web-app>请问这个为什么不能运行呢,有时候会出500错误,有时候是出404错误,还有出503的错误的时候,请指教,我为这个已经烦了三天了,谢谢了,

解决方案 »

  1.   

    (1)同一个url出现了3种错误,还是很多个url出现了3种错误?
    (2)出错的url是什么?
    (3)把你的servlet放到某个包下面试试,不要放在顶级。
      

  2.   

    <servlet-class> 包名.HelloServlet </servlet-class> 
      

  3.   

    <servlet-class>应该是完整的类名
      

  4.   

    <servlet-class> HelloServlet </servlet-class>这里是个错误,必须要要包名。
    <servlet-class>包名.HelloServlet </servlet-class>
      

  5.   

    错误代码
    type Exception report  message 
    description The server encountered an internal error () that prevented it from fulfilling this request.
    exception 
    javax.servlet.ServletException: Class HelloServlet is not a Servlet
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    java.lang.Thread.run(Thread.java:717)
    root cause 
    java.lang.ClassCastException: HelloServlet cannot be cast to javax.servlet.Servlet
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    java.lang.Thread.run(Thread.java:717)
    note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs. 
      

  6.   

    为什么不用开发工具部署?
    以前学的时候也手动部署过,但是后来用了MyEclipse就变得懒了。
    现在,有点忘了。惭愧!
      

  7.   

    把servlet放到一个包里改成这样试下<servlet-class>包名.HelloServlet </servlet-class>
      

  8.   

     Class HelloServlet is not a Servlet
    有没有搞错,看看你继承的是什么类,HttpServlet
      

  9.   

    根据异常堆栈和楼主的情况,猜想问题可能为:
    Class HelloServlet is not a Servlet;java.lang.ClassCastException检查类的继承列表,异常提示造型错误。
      

  10.   

    root cause 
    java.lang.ClassCastException: HelloServlet cannot be cast to javax.servlet.Servlet应该是你的这个类没有继承HttpServlet这个类吧。
      

  11.   


    Class HelloServlet is not a Servlet好久灭有来这里说几句了,可能最近又比较闲了,楼主这个问题能困扰三天?我真是佩服你,呵呵,没有一点其他的意思,就是觉得,解决问题,你就直接往解决问题的方向考虑,他抛出了什么异常,一看就知道,这里当然不仅仅是从这里来说,不知道用的何种开发工具,你直接设置一个断点,一运行,能跳进断点吗?我想肯定不能,直接就不是这里的问题,是你引用有问题吧,web.xml写serverlet映射,希望检查一下。
      

  12.   

    异常信息很清楚哦:
    javax.servlet.ServletException: Class HelloServlet is not a Servlet
    HelloServlet 不是一个Servlet
    java.lang.ClassCastException: HelloServlet cannot be cast to javax.servlet.Servlet
    HelloServlet 不能转换成javax.servlet.Servlet这个类型你的代码有没有继承HttpServlet?或者继承GenericServlet?或者实现Servlet接口?
      

  13.   

    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    public class HelloServlet extends HttpServlet { @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    System.out.println("HelloServlet!");

    }

    }
      

  14.   

    上面就是我类的内容,我把这个类放到包里面,然后再在classes里面加上完整的包路径也没有用
      

  15.   

    我用的是Eclipse写的Java类,最近开始学习Java web了,用tomcat运行servlet程序就出错,静态的HTML还是可以运行的!
      

  16.   

    路径问题
    <servlet>
    <servlet-name>ClassroomOP</servlet-name>
    <servlet-class>
    com.exlesson.servlet.enterprise.common.Operation
    </servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>ClassroomOP</servlet-name>
    <url-pattern>/enterprise/classOP</url-pattern>
    </servlet-mapping><servlet-class>里面写绝对路径
      

  17.   

    这是你刚改的还是之前就这样?
    现在还是报javax.servlet.ServletException:   Class   HelloServlet   is   not   a   Servlet?
    html也是在myapps中么?
    还有你是怎么访问这个servlet的?url是怎么写的?
      

  18.   

    这是我的web.xml的内容<?xml version="1.0" encoding="ISO-8859-1"?>
    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
       version="2.5">  <display-name>Welcome to Tomcat</display-name>
      <description>
         Welcome to Tomcat
      </description><servlet>
            <servlet-name>HelloServlet</servlet-name>
            <servlet-class>HelloServlet</servlet-class>
        </servlet>
     <servlet-mapping>
            <servlet-name>HelloServlet</servlet-name>
            <url-pattern>/HelloServlet</url-pattern>
        </servlet-mapping>
      
    </web-app>
      

  19.   

    现在有时候还会出HTTP Status 405 - HTTP method GET is not supported by this URL这个错误
      

  20.   

    <url-pattern> /servlet </url-pattern>  你之所以出现505,404.我怀疑你请求的url不正确url一定要以servlet结尾,才可以请求到这个servlet。
    给分吧