是不时调用了bean bean里面用了抛出异常

解决方案 »

  1.   


    jsp代码的确有长度限制!
      

  2.   

    刚才一想,这个问题也挺有意思的,于是分别在resin和tomcat上做了个试验,结果如下:resin2.1.12通常显示如下异常信息:500 Servlet Exception
    java.lang.ClassNotFoundException: _test_0length__jsp [java.lang.ClassNotFoundException:
    _test_0length__jsp [java.lang.ClassFormatError: _test_0length__jsp (Code
    of a method longer than 65535 bytes)]]
    at com.caucho.util.DynamicClassLoader.findClass(DynamicClassLoader.java:571)
    at com.caucho.util.DynamicClassLoader.loadClass(DynamicClassLoader.java:512)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:219)
    at com.caucho.util.CauchoSystem.loadClass(CauchoSystem.java:395)
    at com.caucho.jsp.JspManager.loadClass(JspManager.java:267)
    at com.caucho.jsp.JavaGenerator.compile(JavaGenerator.java:2853)
    at com.caucho.jsp.JspGenerator.generate(JspGenerator.java:322)
    at com.caucho.jsp.JspParser.parse(JspParser.java:329)
    at com.caucho.jsp.JspParser.parse(JspParser.java:234)
    at com.caucho.jsp.JspManager.createPage(JspManager.java:172)
    at com.caucho.jsp.PageManager.getPage(PageManager.java:351)
    at com.caucho.jsp.PageManager.getPage(PageManager.java:206)
    at com.caucho.jsp.QServlet.getPage(QServlet.java:220)
    at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:129)
    at com.caucho.server.http.Invocation.service(Invocation.java:315)
    at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:135)
    at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:246)
    at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:163)
    at com.caucho.server.TcpConnection.run(TcpConnection.java:139)
    at java.lang.Thread.run(Thread.java:534)
    --------------------------------------------------------------------------------
    Resin 2.1.12 (built Tue Dec 9 14:58:25 PST 2003) tomcat5.019通常会显示这样的出错信息org.apache.jasper.JasperException: Unable to compile class for JSPAn error occurred at line: -1 in the jsp file: nullGenerated servlet error:
        [javac] Compiling 1 source fileH:\Apache Group\Tomcat 5.0\work\Catalina\localhost\lynews\org\apache\jsp\test_005flength_jsp.java:26: code too large
      public void _jspService(HttpServletRequest request, HttpServletResponse response)
                  ^
    1 error
    org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:127)
    org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:351)
    org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:415)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:458)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:553)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:291)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)从异常信息可以看出,文件长度的确会影响编译,但由于各种应用服务器仅仅遵循sun的j2ee规范,而具体实现由各个提供商自己把握,所以,resin允许的长度要略微大一点点。请注意,文件的长度判断依据与文件体积并非一个概念,比如,使用out.println(" ");和使用out.println("*************************************************");文件体积相差很大,但编译时并没有差别。虽然定性分析过了,但定量分析您就自己完成吧,分析一下应用服务器的实现源码应该能够找到答案,Goodluck!恳请大家批评!
      

  3.   

    感谢楼上几位大虾的回复,但是我的代码现在已经有将近5000行,我即使精简我的代码也不可能有太多的变化。况且我的代码有一部分还没有写上去,全部写完后怎么着也会超过5000行,所以楼上兄弟提出的定量分析肯定不可取,难道就没有好的办法,是不是tomcat的版本问题,我用的是tomact5。0
      

  4.   

    是不是因为java的class文件不能长于64K的缘故呢?
    这个限制有没有出处呢?我一下子找不到
      

  5.   

    我也想分解,但是这么多代码实现的仅仅是一个功能,只不过功能复杂一些,代码之间互相嵌套,我也不可能把它们分解呀!即使分解我也只能把处理页面和数据录入页面分开,在主文件用include结合起来,这样的话和不分解并没有太大区别!我要实现的功能比较大,涉及到十几个表,所以代码比较长,有没有好的方法!
      

  6.   

    有限制,java中一个方法的有效代码不可以超过64K
      

  7.   

    搂住的什么功能阿??这么复杂??可以发给我看看吗??
    [email protected]