我写了一个java文件一个jsp文件,在jsp文件中调用这个java文件,我编译java文件生成class文件,我把class文件放在了C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\ROOT\WEB-INF\classes\ch06 下面 其中C:\Program Files\Apache Software Foundation\Tomcat 6.0是Tomcat的安装路径, 我把jsp文件放在了C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\ROOT 下面 
  在地址栏输入http://localhost:8080/calculate.jsp后 会出现以下错误
HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: org.apache.jasper.JasperException: Unable to load class for JSP
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:154)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:320)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause org.apache.jasper.JasperException: Unable to load class for JSP
org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:600)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:142)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:320)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause java.lang.ClassNotFoundException: org.apache.jsp.calculate_jsp
java.net.URLClassLoader$1.run(Unknown Source)
java.security.AccessController.doPrivileged(Native Method)
java.net.URLClassLoader.findClass(Unknown Source)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:134)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66)
org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:598)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:142)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:320)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.10 logs.
哪位大虾能告诉我这是怎么回事? tomcat已经设置,对于jsp中如何调用JavaBean是一头雾水啊,
希望大家帮忙看一下哈 谢谢啦~~~~~

解决方案 »

  1.   

    http://localhost:8080/calculate.jsp项目名呢??
      

  2.   

    jsp文件:[/i]
    <%@ page contentType="text/html;charset=gb2312"%>
    <jsp:useBean id="calculator" scope="request" class="ch06.SimpleCalculator">
      <jsp:setProperty name="calculator" property="*"/>
    </jsp:useBean><html>
    <head>
    <title>简单计算器</title>
    <meta http-equiv="Content-Type" content="text/html;charset=gb2312">
    </head><body>
    <p align=center><b>简单的计算器</b>
    <hr>
    计算结果:<%
    try
    {
           calculator.calculate();
           out.println(calculator.getFirst()+calculator.getOperator()+calculator.Second()+"="+calculator.getResult());
    }catch(e){
     out.println(e.getMessage());
    }
    %><hr>
    <form action="calculate.jsp" method=get>
    <table width="75%">
     <tr>
        <td align=right>第一个参数</td>
        <td><input type=text name="first"></td>
     </tr>
     <tr>
       <td align=right>操作符</td>
       <td><select name="operator">
               <option value="+">+</option>
               <option value="-">-</option>
               <option value="*">*</option>
               <option value="\">\</option>
           </select>
     </td>
     </tr>
    <tr>
       <td align=right>第二个参数</td>
       <td><input type=text name="second"></td>
    </tr>
    <tr>
       <td></td>
       <td><input type=submit value="计算"></td>
    </tr></table>
    </body>
    </html>[i]java文件
    package ch06;
    public class SimpleCalculator{
          //属性声明
          private String first;
          private String second;
          private double result;
          private String operator;      /**
           *以下是一些属性方法
           */
         
          public void setFirst(String first)
          {
               this.first=first;
          }       public void setSecond(String second)
          {
               this.second=second;
          }
           public void setOperator(String operator)
          {
               this.operator=operator;
          }       public String getFirst(){
                return first;      
           }
     
           public String getSecond(){
                return second;
           }       public String getOperator(){
                return operator;
           }       //获得计算结果
           public double getResult(){
                return this.result;
           }
           /**
            *根据不同的操作符进行计算
            */
           
           public void calculate(){
                 double one=Double.parseDouble(first);
                 double two=Double.parseDouble(second);
                 try{
                       
                     if(operator.equals("+"))result=one+two;
                        else if(operator.equals("-"))result=one-two;
                        else if(operator.equals("*"))result=one*two;
                        else if(operator.equals("/"))result=one/two;
                 }catch(Exception e){
                      System.out.println(e);
                    }
           }         
    }
      

  3.   

    OH
    偶看错了
    把calculate.jsp帖出来
      

  4.   

    应该是tomcat启动的时候  不能够将jsp编译成servlet  
      

  5.   

      private String first = "0";
      private String second = "0";
      private String operator = "+";看看
      

  6.   

    try
    {
      calculator.calculate();
      out.println(calculator.getFirst()+calculator.getOperator()+calculator.Second()+"="+calculator.getResult());
    }catch(Exception e){
     out.println(e.getMessage());
    }
    。。老眼昏花,LZ不要斜体字,要是JSP和JAVA代码的话,用JAVA标签-->
      

  7.   

    我想着把标题搞成斜体的 但是不知道怎么回事 下面连带着都成斜体的了 对不住大家啊 ~~ 深表歉意~~
     
    改成private String first = "0";
      private String second = "0";
      private String operator = "+";之后还是不行呢
      

  8.   

    catch(Exception e)
    还有
      

  9.   

     Unable to load class for JSP  我觉得这句话是关键
      

  10.   

    我晕啊,这么简单,
    这肯定是路径问题啊,
    jsp找不到你的Class文件,所以很自然报错了,你把两个文件放在同一个目录下,
    肯定就ok了,如果你代码写正确的话!~~!
      

  11.   

    C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\ROOT\WEB-INF\classes\ch06 
     C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\ROOT 这是错误的放法,不报错才怪~!~!
      

  12.   

    lz:
    你的tomcat环境变量配置对了吗
      

  13.   

    应该是class文件的路径错了,你看一下
      

  14.   

    C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\ROOT\WEB-INF\classes\ch06  
     C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\ROOT
    为什么出错呢? 那应该怎么写呢?
      

  15.   

    http://localhost:8080/Root/calculate.jsp 这样试试
      

  16.   

    你为什么要在ROOT里面弄呢,直接弄个项目测试JavaBean和JSP就好了!错误提示是JSP文件找不到
      

  17.   

    试试写成<jsp:useBean id="../ch06/calculator" scope="request" class="ch06.SimpleCalculator">
      

  18.   

    你的路径有很多错误,看楼上的答案。
    建议你用myeclipse
      

  19.   

    经过测试你的代码,其中修改,与各位lz一样,有以下看法:500错误,常见的服务器内部错误,这里指的是你的网页内部错误。即常见的网页语法错误。其他没变,做的修改有---1.calculator.Second()改成calculator.getSecond();2.catch(e){ 成 atch(Exception e){;这些都是细节性错误,属语法,要认真写才对。
    其他的想法同楼主 array2010 一样,可以用ROOT作为目录,输入的路径或网址,以及文件内部的路径并没有出现错误。
      

  20.   

    C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\ROOT\WEB-INF\classes\ch06  
     C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\ROOT  路径没错。