CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

我已经把servlet.jar加到classpath中了,可是为什么还是无法编译servlet?

楼主sayyouandsayme(【说你说我】)2003-11-03 17:48:56 在 Java / Web 开发 提问

 
  我装的有tomcat   5.0.12,我把lib中的servlet-api.jar文件已经加到classpath中了,可是编译HelloWorld时还是出现如下异常:  
  ----------   Compile   ----------  
  HelloWorld.java:2:   package   javax.servlet   does   not   exist  
  import   javax.servlet.*;  
  ^  
  HelloWorld.java:3:   package   javax.servlet.http   does   not   exist  
  import   javax.servlet.http.*;  
  ^  
  HelloWorld.java:5:   cannot   resolve   symbol  
  symbol     :   class   HttpServlet    
  location:   class   HelloWorld  
  public   class   HelloWorld   extends   HttpServlet   {  
                                                                  ^  
  HelloWorld.java:7:   cannot   resolve   symbol  
  symbol     :   class   HttpServletRequest    
  location:   class   HelloWorld  
      public   void   doGet(HttpServletRequest   req,   HttpServletResponse   res)  
                                          ^  
  HelloWorld.java:7:   cannot   resolve   symbol  
  symbol     :   class   HttpServletResponse    
  location:   class   HelloWorld  
      public   void   doGet(HttpServletRequest   req,   HttpServletResponse   res)  
                                                                                          ^  
  HelloWorld.java:8:   cannot   resolve   symbol  
  symbol     :   class   ServletException    
  location:   class   HelloWorld  
                                                                throws   ServletException,   IOException   {  
                                                                              ^  
  6   errors  
   
  这是怎么回事?  
   
  TMD,java的开发环境怎么就这么难配置?为什么sun不把所有的api都包括在jdk中?  
   
  问题点数:0、回复次数:13Top

1 楼maclj(学了才知道不懂)回复于 2003-11-03 18:01:24 得分 0

你把它放到你的jdk安装目路下\jre\lib\ext\中  
   
  Top

2 楼sayyouandsayme(【说你说我】)回复于 2003-11-03 18:16:49 得分 0

原来是这样?  
  加到classpath里不行吗?  
   
  那么还要把什么加到\jre\lib\ext\中????????????  
  我还要学jsp  
  Top

3 楼sayyouandsayme(【说你说我】)回复于 2003-11-03 19:08:32 得分 0

1.为什么要把它放在\jre\lib\ext中而不是加入classpath?  
  2.我把编译后的class文件放到了tomcat_home\webapps\web-inf\classes下,可是运行时还是提示:  
  type   Status   report  
   
  message   /servlet/HelloWorld  
   
  description   The   requested   resource   (/servlet/HelloWorld)   is   not   available.  
  这是怎么回事???  
   
  我这两步都是照着o'reilly的<java   servlet   programming   2rd>来做的,怎么都有问题呀?  
   
   
  为什么java的环境这么难配置????????????????????????????????????????????????????????  
   
  我什么时候才能把精力用在代码编写上???????????????????????????????????????????????  
   
   
  我靠,我真受不了了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  
   
   
  Top

4 楼sayyouandsayme(【说你说我】)回复于 2003-11-04 08:48:38 得分 0

大家指点一下.  
  我实在没辙了!Top

5 楼realby(忽然睡了)回复于 2003-11-04 08:59:48 得分 0

放到jakarta-tomcat-5.0.12\lib\下  
  servlet-api.jar包里有servlet.http.*吗~打开看看~~~  
  我用的都是servlet.jar~~不过我的是T4.0.6Top

6 楼sayyouandsayme(【说你说我】)回复于 2003-11-04 18:18:56 得分 0

servlet-api.jar包里有servlet.http.*吗~打开看看~~~  
  ================================================  
  当然有了,我打开看了,什么都有啊?  
   
  我如果在url中用/servlet/HelloWorld的话,会出现错误,但是如果把这个servlet映射到一个heml文件上的话,则可以通过这个html文件访问这个servlet,why?????????????Top

7 楼zenwin(zenwin)回复于 2003-11-11 17:35:53 得分 0

顶............  
  为什么class文件放到了tomcat_home\webapps\web-inf\classes  
  还提示找不到bean???????????????    
  Top

8 楼liulu2003(因为是女子)回复于 2003-11-11 18:02:36 得分 0

把servlet-api.jar加到CLASSPATH里后,还要在servlet-api.jar后加上;(分号),楼主请看看你加没加,  
  至于找不到BEAN的问题,把BEAN放在一个包里吧,从一个包里调用会好的,比如:text.Bean(text是包名,Bean是.class文件)Top

9 楼007james(苏乞儿)回复于 2003-11-11 18:12:04 得分 0

初学者问的诸如:《怎样配置环境变量》《怎样运行Servlet》啊?这样的问题太多了,现在我写一个初学者入门必读,以便对初学者有指导作用!  
  首先是下载工具:  
  我建议初学者用Editplus+JDK,我觉得如果用例如JB,Eclipse,JCreator,虽然刚开始的时候比较方便,但是确使初学者门不知道怎样配置环境变量,  
  从而难以达到知其然,知其所以然的地步  
  可以通过如下地址下载:  
  Editplus(最新版本是v2.11):http://count.skycn.com/softdown.php?id=3641&url=http://sc-http.skycn.net/down/epp211a_cn.exe(要照注册码就自己找吧,网上很多的)  
  JDK(最新版本是Java2sdk1_4_2):http://count.skycn.com/softdown.php?id=3116&url=http://sc-http.skycn.net/down/j2sdk-1_4_2-windows-i586.exe(这是For   Windows)  
   
  然后就是安装JDK,我是把它装到从c:\JDK目录下面:  
  然后就是CLASSPATH的问题了:  
  正如操作系统利用PATH来搜索可执行程序一样,Java运行环境也会遍历CLASSPATH来查找类,即便是HelloWorld这样简单的程序,JVM也会遍历  
  CLASSPATH定义的每一个路径,直到找到相应的文件为止。  
  相信大家用的系统不是2k就是XP,然后就应当如下设置Path:  
  我的电脑->属性->高级->环境变量  
  然后在环境变量的Path后面追加:   C:\JDK\bin;.;C:\JDK\lib  
  也可以这样配置:C:\JDK\bin;.;C:\JDK\lib\dt.jar;C:\JDK\lib\tools.jar  
  ★记住:环境变量中的   .   切记不能少,它表示当前路径,如果少掉出现的错误等会就说!  
  dt.jar是关于运行环境的类库,tools.jar是关于一些工具的类库  
  如果没有配置:C:\JDK\bin,则会出现     “   javac'   不是内部或外部命令,也不是可运行的程序或批处理文件。”这样的错误。  
  然后下面就该写程序了:  
  首先是(HelloWorld.java),打开Editplus,新建一个Java文件,请照着如下输入,要一字不漏,并且分清大小写:  
  public   class   HelloWorld{  
      public   static   void   main(String[]   args){  
              System.out.println("Hello,World!");  
              }  
        }  
  然后把这个文件保存(ctrl   +   s)到HelloWorld.java,记住大小写一定要分清,是HelloWorld.java不是helloworld.java或者其他的  
  下面就该运行了,开始->运行->cmd  
  在控制台中把目录切换到当前目录:  
  javac   HelloWorld.java  
  java   HelloWorld  
  你就会在控制台上看见输出的Hello,World!(没出来?我把电脑吃了:))  
  javac是编译命令,它把HelloWorld.java编译成HelloWorld.class  
  java就是解释命令,JVM把HelloWorld.class解释执行.  
  在这个时候:  
  1。如果出现Exception   in   thread   "main"   java.lang.NoClassDefFoundError:   HelloWorld  
  那就是你在环境变量中没有加上那个.(dot)  
  2。如果出现Exception   in   thread   "main"   java.lang.NoSuchMethodError:   main    
  或者HelloWorld.java:1:   Public   class   helloworld   must   be   defined   in   a   file   called    
   
  "HelloWorld.java".    
  那就是你没有分清大小写的写入这个HelloWorld,或者保存得时候没有保存为HelloWorld.java  
  这个名字一定要跟public   class的名字一样  
   
  对于环境变量的问题就说到这里,下面我先所说怎么在Editplus里面编译和运行,在Tools->参数设置->配置用户工具  
  1.添加工具(添加应用程序)  
  菜单文字:Compile   Java   Program  
  程序:C:\JDK\bin\javac.exe  
  参数:文件名称  
  初始目录:文件目录  
  2.添加工具(添加应用程序)  
  菜单文字:Run   Java   Program  
  程序:C:\JDK\bin\java.exe  
  参数:文件名称(不含扩展名)  
  初始目录:文件目录  
   
  工具组名称可以随便添,比如Debug   Java   Program  
  然后在Tools的下拉菜单中,你就会看见Compile   Java   Program以及Run   Java   Program这两个选项,以后你就可以利用ctrl   +   1编译和ctrl   +2运行程序了  
   
   
  下面就讨论Servlet的运行:  
  首先要运行Servlet,则需要JSP/Servlet   container,我建议初学者用Tomcat  
  Tomcat(最新版本5.0):http://cvs.apache.org/builds/jakarta-tomcat-5/nightly/jakarta-tomcat-5-bin-20030725.zip  
  然后把这个压缩包解压到:  
  C:\Tomcat  
  然后再配置环境变量:  
  添加三个系统变量:  
  JAVA_HOME:   C:\JDK  
  TOMCAT_HOME:   C:\Tomcat  
  CLASSPATH:   %JAVA_HOME%\lib;%TOMCAT_HOME%\lib  
  Tomcat的环境变量就配置完毕了,下面检验Tomcat是否能够运行:  
  在控制台中转到C:\Tomcat\bin这个目录,运行startup,然后回出现一个窗口,连跳一大串东西,最后表示Server已经运行  
  在浏览器中输入http://localhost:8080,出现欢迎界面,则表示Tomcat没问题了  
  然后和上面一样,写入你的第一个Servlet  
  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("</body></html>");  
         
        }  
        }  
        然后照样用javac   HelloWorld.java来编译这个文件,如果出现无法import   javax.servlet.*  
        那么就是应该把C:\Tomcat\common\lib里面的servlet.jar文件拷贝到C:\JDK\jre\lib\ext中,再次编译,就没有问题了!  
        然后在Tomcat目录里面的C:\Tomcat\webapps\ROOT里面按如下的文件结构:  
        ROOT\index.html  
        ROOT\welcom.jsp  
        ROOT\WEB-INF\lib\MyServlet.jar(如果你的servlet的.class打成了.jar文件,则放在lib下面)  
        ROOT\WEB-INF\classes\HelloWorld.class(把上面生成的HelloWorld.class文件放在这个里面)  
   
    然后在浏览器中输入http://localhost:8080/servlet/HelloWorld,于是Server众望所归的报错了:Error   404--Not   Found    
    怎么回事呢?  
    Servlet必须使用C:\Tomcat\webapps\ROOT\WEB-INF这个目录下面的web.xml文件进行注册,用EP打开这个web.xml文件,  
    在里面加入  
          <servlet>  
                <servlet-name>HelloWorld</servlet-name>  
        <servlet-class>HelloWorld</servlet-class>  
        </servlet>  
        <servlet-mapping>  
                <servlet-name>HelloWorld</servlet-name>  
        <url-pattern>/servlet/helloworld</url-pattern>  
        </servlet-mapping>  
   
        这样的结构  
        <servlet>  
        <servlet-name>HelloWorld</servlet-name>  
        <servlet-class>HelloWorld</servlet-class>  
  </servlet>  
  表示指定包含的servlet类.  
  而以下的结构  
        <servlet-mapping>  
                <servlet-name>HelloWorld</servlet-name>  
        <url-pattern>/servlet/HelloWorld</url-pattern>  
        </servlet-mapping>  
        表示指定HelloServlet应当映射到哪一种URL模式。  
        在修改web.xml完毕过后,重新启动Server,然后再输入http://localhost:8080/servlet/HelloWorld,那么偌大一个Hello,World!等着你呢,恭喜你  
        摆平了:)  
        艾,手都打累了,就写到这儿吧,希望对初学者有一点作用!  
  Top

10 楼luckybeggar(木子)回复于 2003-11-11 18:14:01 得分 0

servlet.jarTop

11 楼liulu2003(因为是女子)回复于 2003-11-11 18:15:15 得分 0

servlet.jar;Top

12 楼sayyouandsayme(【说你说我】)回复于 2003-11-11 21:27:18 得分 0

非常感谢苏乞儿!!!!!!!!!!!!!!!  
  真是大好人!!!!!!!!!!!!!!!!!!!!!!Top

13 楼JCC0128(代码写到手抽筋)回复于 2003-11-11 23:35:11 得分 0

 
  http://expert.csdn.net/Expert/topic/2077/2077182.xml?temp=.999386  
   
   
   
  继续做搜索的普及工作,累~  
   
   
  http://expert.csdn.net/Expert/topic/2372/2372751.xml?temp=.6264154Top

相关问题

  • 如何设置classpath来编译servlet?
  • servlet的编译?
  • 怎样编译servlet
  • 编译JAVA程序的时候,如果需要的JAR不在CLASSPATH,有什么办法能成功编译吗???
  • jdk编译servlet时问题
  • 关于编译java servlet
  • servlet编译不了,急~~
  • servlet编译小问题!!!
  • servlet的编译及运行
  • eclipse 如何编译 servlet

关键词

  • .net
  • servlet
  • println

得分解答快速导航

  • 帖主:sayyouandsayme

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo