编写了一个简单的Servlet,HelloWorld.java
package test;import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;public class HelloWorld extends HttpServlet
{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter(); out.println("<html>");
out.println("<head>");
         out.println("<title>HelloWorld</title>");
out.println("</head>")
out.println("<body>HelloWorld</body>");
out.println("</html>");
}
}
环境变量
JAVA_HOME=C:\j2sdk1.4.2_13
CATALINA_HOME=C:\Program Files\Apache Software Foundation\Tomcat 5.0
CLASSPATH=C:\j2sdk1.4.2_13\lib\dt.jar;C:\j2sdk1.4.2_13\lib\tool.jar;C:\j2sdk1.4.2_13\lib\tools.jar;C:\Program Files\Apache Software Foundation\Tomcat 5.0\common\lib\servlet-api.jar;C:\Program Files\Apache Software Foundation\Tomcat 5.0\common\lib\jsp-api.jarPath=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\j2sdk1.4.2_13\bin将编译完后的HelloWorld.class放入%CATLINA_HOME%\webapps\servlet\WEB-INF\classses\test\目录下
并且修改了servlet\WEB-INF\下的web.xml
<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd"><web-app>
  <display-name>my program</display-name>
  <description>
     test
  </description>
  
  <servlet>
  <servlet-name>HelloWorld</servlet-name>
  <display-name>HelloWorld</display-name>
  <description>A test Servlet</description>
  <servlet-class>test.HelloWorld</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>HelloWorld</servlet-name>
  <url-pattern>/HelloWorld</url-pattern>
  </servlet-mapping>
</web-app>
重新启动Tomcat,但是在浏览器中输入http://127.0.0.1:8080/webapps/servlet/HelloWorld
出现下面的错误
type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: Wrapper cannot find servlet class test.HelloWorld or a class it depends on
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:684)
java.lang.Thread.run(Thread.java:534)
root cause java.lang.ClassNotFoundException: test.HelloWorld
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1340)
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:684)
java.lang.Thread.run(Thread.java:534)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.29 logs.无法定位class文件啊,郁闷啊,上次写javabean时也是类似的错误,也找不带class文件,但是我的class文件已经放在相应文件夹下了啊,我都快疯了。大家救救我啊

解决方案 »

  1.   

    基本上是没有错, 不过你
    应该在浏览器中输入http://127.0.0.1:8080/servlet/HelloWorld
      

  2.   

    Web.xml配置没问题,servlet也没问题,
    如果你没有去改动tomcat本身的配置文件的话,你就按楼上所讲的一样,输入http://127.0.0.1:8080/servlet/HelloWorld
      

  3.   

    错误提示就是找不到HelloWorld类,就是路径输错了,不应该要webapps
      

  4.   

    ls几位都是正确的,webapps这个目录是不需要的
      

  5.   

    你的端口被占用了,你把tomcat改到另一个版本就可以了,或者你换一个端口就可以 了
      

  6.   

    请问LZ是不是用MyEclipse或Eclipse等工具进行开发的。强烈建议LZ去Tomcat下去看看是不是真有你写的那个servlet,因为有的时候工具不给你自动编译和发部。————————————我以前就碰到过同样的问题,就是介样解决的。
      

  7.   

    把servlet——class属性中的包名去掉试试
      

  8.   

    这个问题可以告一段落了,楼主
      <servlet-class> test.HelloWorld </servlet-class> 你的可执行文件 必须要放在  test目录下面,因为你在HelloWorld 里面打了一个 test包,那么就意味着
     HelloWorld.class文件必须处于 test文件夹下面,这才是有意义的,而 你的这个文件HelloWorld.class我敢肯定 绝对 没有放在 test文件夹里面如果打的 包是  package com.test,那么就要放在路径 com\test\下面,但是Servlet是你最开始建立的文件夹,然后应该有这样的路径 Servlet\WEB-INF\classes\test\HelloWorld.class(HelloWorld.class可以拷贝到这里来,)  你的问题只需要多建立一个 test文件夹就搞定了
      

  9.   

    这个问题可以告一段落了,楼主
      <servlet-class> test.HelloWorld </servlet-class> 你的可执行文件 必须要放在  test目录下面,因为你在HelloWorld 里面打了一个 test包,那么就意味着
     HelloWorld.class文件必须处于 test文件夹下面,这才是有意义的,而 你的这个文件HelloWorld.class我敢肯定 绝对 没有放在 test文件夹里面如果打的 包是  package com.test,那么就要放在路径 com\test\下面,但是Servlet是你最开始建立的文件夹,然后应该有这样的路径 Servlet\WEB-INF\classes\test\HelloWorld.class(HelloWorld.class可以拷贝到这里来,)  你的问题只需要多建立一个 test文件夹就搞定了
      

  10.   

    javax.servlet.ServletException: Wrapper cannot find servlet class 
    我用的是myEclipse也有这个错误!!
      

  11.   

    有时候myeclipse下你项目的buildpath有问题会导致项目不会编译, 你看下你项目下WEB-INF\classes你所引用的类是否存在
      

  12.   

    我今天碰到这个问题了,我用的eclipse,建立的Java项目,然后改造为web项目
    错误原因是
    jqueryui/web/WEB-INF/classes 
    我弄成了
    jqueryui/web/WEB-INF/classee不知道什么时候不小心弄成的,但是就是一直报错,一直调不通 突然看到了,,,,困扰了我快一小时在我重新建立项目测试的时候发现了
      

  13.   

    改一下web.xml中的<servlet-class> 就行了,注意包名