大家好,
1。   我不知道那个有servlet的类怎么不能编译,我的JDK是1.5.0的版本。我想做个JSP网站,我的TOMCAT里面有个SERVLET包的。  编译的时候说我的SERVLET包不存在等很多问题。我什么办法?  我在用Eclipse保存时可以生成相应类。但是用JAVAC编译就不行了。 为什么?
    
2。我不知道如果Eclipse保存时能生成类,那么是不是说生成的类没有语法错误?如果JAVA源文件里有错的话,我该怎么看到他的错误信息?Eclipse上好像没有专门用于编译的按钮的。   我就是上面的两个问题了。
 希望知道的解答一下,谢谢。

解决方案 »

  1.   

    1.找到tomcat/lib(5.0的是comon/lib)下的jsp-api.jar,servlet-api.jar两个jar包。 
    2.将它们复制到Java\jdk\jre\lib\ext下再编译就ok了。
      

  2.   

    不是classpath的问题,因为其它的平常的JAVA文件都是可以编译的。
      

  3.   

    感谢pengyouforever,你的方法很有效。但是还是有13个问题(开始的时候有28个问题,我是不是太水了啊,哈哈。)下面我把代码发过来:
    我实在是搞不定了。唉
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    public class HandleComputer extends HttpServlet{

    public void init(ServletConfig cofig)throws ServletException{
     super.init(config); 
    }
     public void doPost(HttpServletRequest requst,HttpServletResponse reponse) throws ServletException,IOException{
     
      ComputerBean dataBean=null;
      HttpSession session=request.getSession(true);
      try{
       dataBean=(computerBean)session.getAttribute("ok");
       session.setAttribute("ok",dataBean);
      
      }catch(Exception e){
      dataBean=new ComputerBean();
      session.setAttribute("ok",dataBean);
      }
      double numberOne=Double.parseDouble(request.getParameter("numberOne"));
      double numberTwo=Double.parseDouble(request.getParameter("numberTwo"));
      String operator=request.getPatameter("operator");
      double result=0;
      if(operator.equals("+")){
      result=numberOne+numberTwo;
        }
      else if(operator.equals("-")){
      result=numberOne-numberTwo;
        }
      else if(operator.equals("*")){
      result=numberOne*numberTwo;
        }
      else if(operator.equals("/")){
      result=numberOne/numberTwo;
        }
      dataBean.setNumberOne(numberOne);
      dataBean.setNumberTwo(numberTwo);
      dataBean.setOperater(operator);
      dataBean.setResult(result);
    RequestDispatcher dispatcher=request.getRequestDispather("showResult.jsp");
    dispatcher.forward(request,response);
     }
     public void doget(HttpServletRequest requst,HttpServletResponse reponse) throws ServletException,IOExcetion{
        doPost(request,response); 
     }  
    }
    然后,编译的错误是:
    D:\cc>javac HandleComputer.java
    HandleComputer.java:44: cannot find symbol
    symbol  : class IOExcetion
    location: class HandleComputer
     public void doget(HttpServletRequest requst,HttpServletResponse reponse) throws
     ServletException,IOExcetion{                  ^
    HandleComputer.java:7: config has private access in javax.servlet.GenericServlet super.init(config);
                ^
    HandleComputer.java:12: cannot find symbol
    symbol  : variable request
    location: class HandleComputer
      HttpSession session=request.getSession(true);
                          ^
    HandleComputer.java:14: cannot find symbol
    symbol  : class computerBean
    location: class HandleComputer
               dataBean=(computerBean)session.getAttribute("ok");
                         ^
    HandleComputer.java:21: cannot find symbol
    symbol  : variable request
    location: class HandleComputer
      double numberOne=Double.parseDouble(request.getParameter("numberOne"));
                                          ^
    HandleComputer.java:22: cannot find symbol
    symbol  : variable request
    location: class HandleComputer
      double numberTwo=Double.parseDouble(request.getParameter("numberTwo"));
                                          ^
    HandleComputer.java:23: cannot find symbol
    symbol  : variable request
    location: class HandleComputer
      String operator=request.getPatameter("operator");
                      ^
    HandleComputer.java:39: cannot find symbol
    symbol  : method setOperater(java.lang.String)
    location: class ComputerBean
      dataBean.setOperater(operator);
              ^
    HandleComputer.java:41: cannot find symbol
    symbol  : variable request
    location: class HandleComputer
    RequestDispatcher dispatcher=request.getRequestDispather("showResult.jsp");
                                 ^
    HandleComputer.java:42: cannot find symbol
    symbol  : variable request
    location: class HandleComputer
    dispatcher.forward(request,response);
                       ^
    HandleComputer.java:42: cannot find symbol
    symbol  : variable response
    location: class HandleComputer
    dispatcher.forward(request,response);
                               ^
    HandleComputer.java:45: cannot find symbol
    symbol  : variable request
    location: class HandleComputer
        doPost(request,response);
               ^
    HandleComputer.java:45: cannot find symbol
    symbol  : variable response
    location: class HandleComputer
        doPost(request,response);
                       ^
    13 errorscomputerBean.java文件没问题,可以编译。public class ComputerBean {
     double numberOne,numberTwo,Result;
     String operater="+";
     public void setNumberOne(double n){
     numberOne=n;
     }
     public double getNumberOne(){
     return numberOne; 
     }
     public void setNumberTwo(double n){
     numberTwo=n;
     }
     public double getNumberTwo(){
     return numberTwo; 
     }
     public void setOperator(String s){
     operater=s.trim();
     }
     public String getOperator(){
     return operater; 
     }
     public void setResult(double n){
     Result=n;
     }
     public double getResult(){
     return Result; 
     }
    }
    希望会弄的人给出一个解决方案,谢谢,这是我的毕业设计的一部分,我很急,但是无能为力。搞不懂。
      

  4.   

    你好,楼主!
    public void doPost(HttpServletRequest requst,HttpServletResponse reponse) throws ServletException,IOException{这段 HttpServletRequest requst ;而你在方法体引用的变量 是request,所以后面的大部分信息错误就是这个变量无法找到cannot find symbol
      

  5.   

    HandleComputer.java:7: config has private access in javax.servlet.GenericServlet super.init(config);这个错误是 你调用了父类的方法,传入的参数已经被私有化了。
      

  6.   

    小伙子还在notepad+jdk搞啊试试eclipse
      

  7.   

    感谢你们,你们回的很及时。还有最后一个问题:
    D:\cc>javac HandleComputer.java
    HandleComputer.java:41: cannot find symbol
    symbol  : method getRequestDispather(java.lang.String)
    location: interface javax.servlet.http.HttpServletRequest
    RequestDispatcher dispatcher=request.getRequestDispather("showResult.jsp");
                                        ^
    1 error
    这个问题不知道怎么搞。
    帮帮忙。
      

  8.   

    在保证你写的代码没错误的情况下,注意你用到的变量request是不是你定义的request.我是一个刚学java的新手,现在有eclipse开发工具,最好用eclipse.很多错误都可以避免。
      

  9.   

    request.getRequestDispather("showResult.jsp")
    应该是request.getRequestDispatcher("showResult.jsp")
    你还是用IDE吧
      

  10.   

    哦,谢谢你们。我搞出来了,
    还有一个问题,就是。
    我的SERVLET怎么测试啊?
    这是SERVLET 类的目录:D:\program\Tomcat 6.0\webapps\ROOT\WEB-INF\classes\Computer
    我的WEB。XML文件:
    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
       version="2.5">  <display-name>Welcome to Tomcat</display-name>
      <description>
         Welcome to Tomcat
      </description>
      <servlet>
        <servlet-name>handlecomputer</servlet-name>
        <setvlet-class>Computer.HandleComputer</setvlet-class>
      </servlet>
      <servlet-name>handlecomputer</servlet-name>
      <url-pattern>/helpComputer</url-pattern>  
      </web-app>
    然后,我怎么测试它??我用的是TOMCAT。谢谢各位。