type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: /WebRoot/test/calculator.jsp(4,4) The value for the useBean class attribute com.zsf.SimpleCalcolator is invalid.
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause org.apache.jasper.JasperException: /WebRoot/test/calculator.jsp(4,4) The value for the useBean class attribute com.zsf.SimpleCalcolator is invalid.
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:405)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:146)
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1174)
org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1116)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219)
org.apache.jasper.compiler.Node$Root.accept(Node.java:456)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Generator.generate(Generator.java:3305)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:198)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:303)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.显示的错误提示是挺多的  希望大伙慢慢看
我的javabean在com.zsf包中 

解决方案 »

  1.   

    可能是你Bean中的元素不完整!也可能是元素写错误了!
      

  2.   

    网上针对这种错误的分析很多,你可以自己搜索下。
    以下是网上关于这个错误的分析,不知对你有没有用:可见错误可能的原因包括:1. 在编译 JSP 时(不是运行时),指定的 Bean 类没找到
    2. Bean 虽然找到了,但是它不是 public 的,或者找到的 class 文件是 interface 或抽象类
    3. Bean 类中没有 public 的默认构建函数第二点很明显,不用多解释,最经常发生的情况是 Bean 类忘了声明为 public 。第三点中需要注意的是,如果你的 Bean 类没有提供任何构造函数,将自动生成一个默认构建函数,这没有问题。但是,如果你有构造函数,则不会自动生成该默认构造函数。经常被忽略的问题是写了默认构造函数却不是 public 的。第一点看起来简单,不过却最令人头痛,尤其是在开发环境里。这里需要注意的是,"在编译 JSP 时",意味着引用 Bean 的 JSP 是新的,或者刚刚更新过,或者 TOMCAT_HOME/work 中的编译结果被清除了。此时,Tomcat 将自动(重新)编译该 JSP,此时如果发现 Bean 没找到,就会报这个错。情况因为 JSP 或者 Bean 类正在开发而变得复杂,一一列举所有情况没有意义,这里我举一些典型例子,借此应该可以举一反三:如果 JSP 编译结果存在,且 JSP 没有更新,Tomcat 不会重新编译 JSP,同时默认情况也不会自动重新加载更新过的 Bean 类(参考 http://jakarta.apache.org/tomcat/tomcat-5.5-doc/config/context.html 中的 reloadable)。所以,你会发现此时即使删除了 Bean 类都没有问题,当然,更新 Bean 类也不会有什么用。如果在 JSP 编译产生之后,我们重起了服务器,由于 JSP 文件编译的结果存在,所以,可以仍然访问 JSP 页面,而不必重新编译。可是如果访问前,删掉了 Bean 类,就会报过 ClassNotFoundException 而不是上述错误。关键在于 JSP 是否经过编译,没有编译则没有找到类报告题目中的编译错误 ,编译过则是 ClassNotFoundException 运行时实例化错误。
      

  3.   

    重要的错误信息其实是这条:
    org.apache.jasper.JasperException: /WebRoot/test/calculator.jsp(4,4) The value for the useBean class attribute com.zsf.SimpleCalcolator is invalid. 意思是说你的useBean标签的class属性用得不对。有几种可能性,一种可能性是你把包路径打错了,请仔细检查你的包路径是否正确。
    另一种可能性,就是你的SimpleCalcolator没有默认构造方法(即不带参数的构造方法)。解决方案就是在SimpleCalcoator中添加一个默认构造方法,如下:
    public SimpleCalcoator(){
        //这里可以不用写任何代码。
    }JavaBean规范要求一个JavaBean必须要有一个公有的不带参数的构造方法,这个构造方法在你没有写任何构造方法时,编译器会自动帮助你创建,但只要你写过构造方法,编译器就不会帮助你创建了,你需要自己手工添加。useBean标签的作用相信你也知道,就是实例化(new)一个对象,实例化一个对象必须要调用构造方法,而useBean标签并没有提供给你传参的属性,所以useBean标签实例化的对象必须要有无参构造方法才能实例化成功,否则报错。我估计后一种可能性较大,因为前一种(路径打错)可能性应该是报ClassNotFoundException(类找不到异常),而不是invalid(非法),但也说不准,所以,你两个都看看吧。谢谢。
      

  4.   

    非常高兴你能贴出错误信息,因为这样能缩短找错的时间,不过,如果你能将你的JSP代码和SimpleCalcolator 的代码也贴出来,会更容易帮助发现问题所在。
    谢谢。
      

  5.   

    谢谢了  ^_^你说的几点我都明白,我把部分重要的代码贴给你看吧 目录结构  com.zsf.SimpleCalcolator.java
             webroot下test下calculator.jspjavabean我确信书写正确,无参构造函数有,有get和set方法和一些逻辑处理方法calculator.jsp部分代码:<%@ page language="java" contentType="text/html; charset=GB18030"  pageEncoding="GB18030"             import="java.sql.*"%>
          <%Class.forName("com.zsf.SimpleCalcolator"); %>
          <jsp:useBean id="calculator" scope="request" class="com.zsf.SimpleCalcolator">
          <jsp:setProperty property="*" name="calculator"/>
          </jsp:useBean>
      <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">还希望多多指教 
      

  6.   

    把下面这段代码 
    <jsp:useBean id="calculator" scope="request" class="com.zsf.SimpleCalcolator"> 
          <jsp:setProperty property="*" name="calculator"/> 
          </jsp:useBean> 改为
     <jsp:useBean id="calculator" scope="request" class="com.zsf.SimpleCalcolator" /> 
          <jsp:setProperty property="*" name="calculator"/> 试试。