方法代码...超过65535字节限制

时间:2013-04-30 07:30:06

标签: java jsp .class-file

在jsp中我有一个小标题:

<%@ page import="java.util.*"%>

<% HttpSession CurrentSession =
 request.getSession();
 ...
%>

......还有一个很棒的HTML

<html>
...
</html>

如果我尝试按原样读取它,我会收到“...超过65535字节限制”的错误。我必须将其分解。因为我是java的新手,我无法弄清楚如何做到这一点你能指点我的方式吗?

3 个答案:

答案 0 :(得分:2)

JSP被转换为普通的Servlet java源,并且一些生成的方法太大,因为方法长度上有64 KB的限制(在字节代码上)。

如果可能,使用动态包含更改静态包括(实际嵌入其他JSP源)。

解决方案(可能是好的风格)也引入了一些方法,一般代码的部分被移动。例如,使用<tr>

生成HTML表格行
<%@

    void tableRow(String... cellValues) {
        %><tr><%
           for (String cellValue : cellValues) {
               %>  <td><%= cellValue %></td>
  <%
           }
        %></tr>
  <%
    }
%>

...

<%
    tableRow("one", "unu", "un");
    tableRow("two", "du", "deux");
    tableRow("three", "tri", "trois");
%>

P.S。 以上方法规模太小,无法节省太多,占用大块并创建方法 像createResultsTable更有效。

答案 1 :(得分:2)

JSP被编译成servlet代码,然后编译成实际的java .class文件。 JSP代码将被放入一个大的doGet()方法中,如果您的JSP文件非常大,它将达到65535的方法大小限制。该限制来自JVM specification(“code_length项的值必须小于65536“)。

您应该将文件拆分为多个文件。我不会将它拆分为此线程中提出的不同方法,因为它可以使代码逻辑在这种情况下更加复杂,但是对于像proposed by McDowell这样的HTML部分执行jsp:include。 / p>

答案 2 :(得分:0)

<jsp:include page="foo.html" %>标准操作可用于在运行时包含内容 - see some random documentation