javac编译一个测试的servlet出错,也不知道怎么搞的,大家帮我看看。

zhdleo 2003-12-10 11:37:57
原代码:
-----------------------
package test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Test extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out=response.getWriter();
out.println("<html><body><h1>This is a servlet test.</h1></body></html>");
out.flush();
}
}
-----------------------------------------------
一共报了8个错,分别是
line4 的
import javax.servlet.ServletException;
^ 此处 说 javax.servlet do not exist
import javax.servlet.http.HttpServlet;
^
import javax.servlet.http.HttpServletRequest;
^
import javax.servlet.http.HttpServletResponse;
^
public class Test extends HttpServlet {
^
protected void doGet(HttpServletRequest request, HttpServletResponse response) ^ ^
throws ServletException, IOException {
^

我可是把j2sdk 和Tomcat4装好了,测试jsp的时候没有问题,但到了测试servlet
就出了这样的问题。
我感觉是什么没设置对,但是不知道哪里,或者其他什么问题,还望高人指教。

谢谢先。

...全文
89 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Shawn和月 2003-12-11
  • 打赏
  • 举报
回复
可以在编译时指定 classpath:
javac -classpath .;d:\app\java\lib\servlet.jar YourClass.java
用旧版的 jsdk2.0 里的 jar 不如用 j2ee1.4 里的 j2ee.jar,在使用 JBuilder 时会和书上和 API 里写的一样。
(使用旧版 jar 时,在ServletContextListener 中无法使用 ServletContext.setAttribute() 方法,其它地方可以,换上新的就成了)。
zhdleo 2003-12-11
  • 打赏
  • 举报
回复
谢谢两位,我就是不解在我在classpath中添加的那句为什么没有用,而偏偏必须拷贝,

这是让我很不理解的地方,

难道我天加的有错吗?

可能有点攥牛角,但是实在想弄清楚。
IT源哥 2003-12-11
  • 打赏
  • 举报
回复
很可能呢Tomcat没有重启,它记住上次的设置,所以还可以用
hojay2001 2003-12-11
  • 打赏
  • 举报
回复
应该是没有找到servlet-api.jar
要找到这个文件加入环境变量中
eureka0891 2003-12-11
  • 打赏
  • 举报
回复
是javac编译时候出错了吧?
把servlet-api.jar这个包包含在classpath中
或者用一个其他的工具,如jbuilder
abcccccc 2003-12-11
  • 打赏
  • 举报
回复
楼上说的太有道理了,可是问题没给人家解决呀
salx 2003-12-11
  • 打赏
  • 举报
回复
就是没有找到你的servlet.jar包。你用的tomcat版本是多少啊?
xinshou1979330 2003-12-11
  • 打赏
  • 举报
回复
同意楼上说的

servlet.jar考到 TOMCAT的lib 目录下就行了
然后在classpath路径里把他上写上去
凋零的老树 2003-12-11
  • 打赏
  • 举报
回复
servlet.jar把这个考到JDK的lib下,在tomcat/common/lib下可以找到
凋零的老树 2003-12-11
  • 打赏
  • 举报
回复
1,2其实是一个问题,是不一定要拷贝,就是把servlet.jar放到编译时能找到的地方就行,达到这个目的的方法很多,拷贝是比较最简单,古龙说过,最简单的就是最有效的方法

你那个发现没有这样测试过,不敢多说
其实java这个东西可以说博大精深,你有很多东西只有慢慢摸索才能理解,尤其在没有人指导的情况下,偶也是一样的,努力琢磨吧,融会贯通的时候就会明白的
yg1982 2003-12-11
  • 打赏
  • 举报
回复
如果有什么可取的地方请给我打点分,呵呵,我还差点点就升了。
--------------------------------------------------------
我是新手,大家多多指教
yg1982 2003-12-11
  • 打赏
  • 举报
回复
呵呵,我也不是太清楚,可能帮不了你了,以下是个人观点,%80的可能是错的
首先,servlet.jar是个包,可能它的作用就是升级或补充,就像升级游戏的包一样。你运行一次后,以后删了也可以了。
其次,你设置的那个classpath没用。就Tomcat来说,我读过其bat里面的语句,有用的只有JAVA_HOME和Tomcat_HOME,不信你去打开Tomcat的startup.bat,用编辑打开,按照其跳转读下去,你就会发现了。
再次,拷贝手法可能是种很笨的方法,也许我们对J2SDK并不是很了解,于是,这种方法才成了我们的首选,网上其它地方没什么介绍,不过这儿经常讨论。而书上,也许它介绍的方法本是正规方法,只不过过时了吧。
只当作讨论,错了的话不要介意
zhdleo 2003-12-11
  • 打赏
  • 举报
回复
我用的Tomcat是4.1.18

本来用最新的29版本,但是启动startup.bat后dos窗口自动关闭,调试jsp等也有错,

所以现在 用4.1.18
-------------------------
to kongxiangli(笑看红尘)

我将tomcat下的那个servlet.jar包拷贝到j2sdk中存放包的地方后

编译的确成功了。
-------------------
但是我还存在几个以为,

1、我原本在设置系统的classpath的时候有这样一句
......前面省略%TOMCAT_HOME%\common\lib\servlet.jar; (其中TOMCAT_HOME=tomcat的目录)
为什么指定了servlet.jar没有效果?一定要将这个包拷贝到j2sdk中去呢???
不解

2、为什么很多关于tomcat设置的文章,不论书上或者网上的文章都不曾说到这样的拷贝手段?

3、我最后惊奇发现当我拷贝过去,并编译成功一次后,再将拷贝到j2sdk中的servlet.jar包删除后,以后的编译同样成功了?这又怎么解释呢?难道是对这个包有所记录,还是打通了什么?不解。

以上各位,帮帮我再分析分析我这3个问题。谢谢。
yg1982 2003-12-11
  • 打赏
  • 举报
回复
我也遇到过这种问题,当时是这样解决的
在j2sdk里面少个servlet-api.jar或servlet.jar,你把它拷到jdk目录/jre/lib/ext里面,ext没有的话自己加,上面那个 jar文件好像是在Tomcat里面找到的,记不太清了,你自己试试

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧