你没 搞错 JAVA的放到这边来。。2年没用JAVA了
是哦 是必须要放到一个目录的 才用tomcat 4.1呀一般JAVA程序应该无所谓的 只要编译的时候到其目录下面

解决方案 »

  1.   

    CLASSPATH 里不要用 *.jar,把每一个 jar 都写出来
    不过你的问题不是出在这里。不知道你是用 javac 编译的还是用 IDE 编译的,如果是后者,你需要在IDE的 Project 的设置里加上 servlet.jar另,你去 Tomcat 的安装目录下的common\lib看一下,是 servlet.jar ,还是 servlet-api.jar,文件名不能写错的。
      

  2.   

    我是用javac编译的,现可以编译通过了.我把E:\Tomcat 4.1\common\lib\servlet.jar拷贝到E:\j2sdk1.4.2_06\jre\lib\ext下后,就好了,不知道什么原因。
    但是现在我不能在IE下执行HelloWorld,调用如此:http://localhost:8080/hall.HelloWorld
    其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>Welcome to Tomcat</display-name>
      <description>
         Welcome to Tomcat
      </description>
    </web-app>
    <servlet>
      <servlet-name>HelloWorld</servlet-name>
      <servlet-class>HelloWorld</servlet-class>
    </servlet>
    <servlet-mapping>
      <servlet-name>HelloWorld</servlet-name>
      <url-pattern>/hall/HelloWorld</url-pattern>
    </servlet-mapping>
    web-inf下有个hall子目录,其下存放着HelloWorld.java和HelloWorld.class;
    在dos下用java执行,启示Exception in thread "main"java.lang.NoClassDefFoundError:
    请各位在看看
      

  3.   

    WEB-INF/classes 下面放你的包和类,即
    WEB-INF/classes/hall/HelloWrold.class
      

  4.   

    希望下次有和我一样出现错误的人,看到了这样个例子,有点帮助吧。
    ***************************
    /*HelloWorld.java*/
    放到虚拟目录或别的目录下成这样的结构web-inf/classes/HelloWorld.java
    然后编译了成了这样的结构web-inf/classes/Hello/HelloWorld.classpackage Hello;
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    public class HelloWorld extends HttpServlet
    {
    public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
    {response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("<html><head><title>");
    out.println("This is my first Servlet");
    out.println("</title></head><body>");
    out.println("<h1>Hello,World!</h1>");
    out.println("<h2>Hello,World!</h2>");
    out.println("<h3>Hello,World!</h3>");
    out.println("</body></html>");}
    }********************************
    /*web.xml*/修改后的web.xml,修改后记得重新启动Tomcat不然总是出错误的。说找不到。<?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 Web Application</display-name> 
    <description> 
    A application for test. 
    </description> 
    <servlet>
      <servlet-name>HelloWorld</servlet-name>
      <servlet-class>Hello.HelloWorld</servlet-class>
    </servlet>
    <servlet-mapping>
      <servlet-name>HelloWorld</servlet-name>
      <url-pattern>/servlet/HelloWorld</url-pattern>
    </servlet-mapping>
    </web-app> 
    ****************************************把它用Jcreator编译了的HelloWorld.class把打包的以Hello/HelloWorld.class这样的结构一起
    copy到了web-inf里的classes底下。然后去把web-inf里的web.xml修改,加上以下几行:
    <servlet-name>HelloWorld</servlet-name> /*注册一个servlet的别名,一般就用类的名字*/
    <servlet-class>Hello.HelloWorld</servlet-class>/*指明它在web-inf的classes底下开始的位置*/ 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>HelloWorld</servlet-name> 
    <url-pattern>/servlet/HelloWorld</url-pattern>/*一般是用/servlet/*或用/servlet/servlet的名字*/
    就好了。

    <servlet-name>HelloWorld</servlet-name> 
    <servlet-class>Hello.HelloWorld</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>HelloWorld</servlet-name> 
    <url-pattern>/servlet/*</url-pattern> 
    我一直从网上看到的都是这几句要点。一个要点是注册了servlet;一个要点是为这个servlet指定一个位置。
    但是由于每次修改了web.xml后没有重新启动Tomcat。总是以为配置web.xml出错了。一直在修改一直在测试,却总是出来错误。就是在这个原因了。
    如果在ROOT里放的servlet的话,用http://localhost:8080/servlet/HelloWorld访问
    如果放到虚拟目录,比如我的是lanziman的话就用http://localhost:8080/lanziman/servlet/HelloWorld访问。子曼,一个细心的女孩lanziman
      

  5.   

    尤其谢谢cgliang00的代码,确实帮我解决了问题,我接触Java不久,请多多支持。