我初学servlet,按照书上的例子写了个小程序,但是不论怎么样也是运行不了,tomcat报错:HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.我的程序是这样的:1.在  \Tomcat 5.0\webapps  目录下创建 myapp 文件夹,里面新建了 WEB-INF\classes\test 文件夹
2.写了一个firstServlet.java,之后编译成.class,放置在   \Tomcat 5.0\webapps\myapp\WEB-INF\classes\test 目录下
3.写了一个web.xml文档,放在 \Tomcat 5.0\webapps\myapp\WEB-INF 目录下web.xml的内容如下:<web-app>
<servlet>
  <servlet-name>firstServlet</servlet-name>
  <servlet-class>test.firstservlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>firstServlet</servlet-name>
  <url-pattern>/firstServlet</url-pattern>
</servlet-mapping>
</web-app>firstServlet.class的源码如下:import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class firstServlet extends HttpServlet
{  
  public void init(ServletConfig config) throws ServletException
    {
      super.init(config);
    }
  public void service(HttpServletRequest request,HttpServletResponse response) throws IOException
    {
       //设置mime
       response.setContentType("text/html;charset=GB2312");
       PrintWriter out=response.getWriter();
       out.println("<HTML> <BODY>");
       out.println("这是一个简单的servlet。");
       out.println("客户端IP地址是:"+request.getRemoteAddr()+"<br>");
       out.println("</body> </html>");
    } 
}按照上述部署后重启tomcat,在浏览器输入 
http://localhost:8080/myapp/firstServlet
显示说servlet出错,我弄了两天,还是搞不清楚,郁闷死了,希望大虾们指点一下...万分感谢!另:我用jbuilder来写servlet,在jbuilder的内部环境调试成功,可以很好运行,但是将程序转移到tomcat的webapp下运行也是出现这个错误,是不是我的tomcat配置出了问题啊???如果是的话可能会是哪里出问题啊?谢谢~`

解决方案 »

  1.   


    firstServlet 的包是什么
     
      

  2.   

    <servlet-name>firstServlet</servlet-name>
    <url-pattern>/firstServlet/*</url-pattern>
    </servlet-mapping>
    试一下
      

  3.   

    报错是这样的,exception javax.servlet.ServletException: Error allocating a servlet instance
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
    org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
    org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
    java.lang.Thread.run(Thread.java:534)
    root cause java.lang.NoClassDefFoundError: test/firstServlet (wrong name: firstServlet)
    java.lang.ClassLoader.defineClass0(Native Method)
    java.lang.ClassLoader.defineClass(ClassLoader.java:539)
    java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
    org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1634)
    org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:860)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1307)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1189)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
    org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
    org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
    java.lang.Thread.run(Thread.java:534)
    note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.我试过改成
    <servlet-name>firstServlet</servlet-name>
    <url-pattern>/firstServlet/*</url-pattern>
    </servlet-mapping>还是不行啊```
      

  4.   

    我问你的
    firstServlet.java 是不是没有包结构没有包结构的servlet 是不能被加载的
      

  5.   

    我是菜鸟,不大明白什么是没有包结构的servlet,树上好像没怎么说啊,楼上能具体再说一点吗?多谢..
      

  6.   

    java中类是以包的形势组织和加载的 <servlet-class>test.firstservlet</servlet-class> 这样的配置就说明 firstservlet类是在test包下面的不是你把它放到test下面就可以的//////////////////////////////////
    package test ;   //加上这一句,编译后把class放到test文件夹下面就可以了
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    public class firstServlet extends HttpServlet
    {  
      public void init(ServletConfig config) throws ServletException
        {
          super.init(config);
        }
      public void service(HttpServletRequest request,HttpServletResponse response) throws IOException
        {
           //设置mime
           response.setContentType("text/html;charset=GB2312");
           PrintWriter out=response.getWriter();
           out.println("<HTML> <BODY>");
           out.println("这是一个简单的servlet。");
           out.println("客户端IP地址是:"+request.getRemoteAddr()+"<br/>");
           out.println("</body> </html>");
        } 
    }
      

  7.   

    java.lang.NoClassDefFoundError: test/firstServlet (wrong name: firstServlet)找不到 firsrServlet在firsrServlet里  import java.io.*; 上面加 package test;然后重新编译试试?