在生成的java文件中,我遇到了一个发生在一行: 384的错误,方法代码
_jspService(HttpServletRequest,HttpServletResponse)
超过65535字节限制。
我已经尝试了几个解决方案,围绕网络和问题仍然存在。
我使用JBoss-5.1.0GA作为服务器。
下面是错误的堆栈跟踪。
An error occurred at line: 384 in the generated java file
The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes limit
Stacktrace:
at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:335)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:313)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:300)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:585)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:312)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:322)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:249)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:638)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:543)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:480)
at com.liferay.portlet.PortletRequestDispatcherImpl.dispatch(PortletRequestDispatcherImpl.java:307)
at com.liferay.portlet.PortletRequestDispatcherImpl.include(PortletRequestDispatcherImpl.java:115)
at com.liferay.portal.struts.PortletRequestProcessor.doInclude(PortletRequestProcessor.java:284)
at com.liferay.portal.struts.PortletRequestProcessor.doForward(PortletRequestProcessor.java:255)
发布于 2019-10-18 12:16:44
您的JSP太大/太复杂。你需要重构它
我们尝试过重构,但是它不起作用,有没有其他的解决方案?
不是的。
问题是Java虚拟机规范对编译后的Java方法中字节数施加了硬限制。(具体来说,类文件格式使用一个16位数字作为方法代码数组的两侧。)
Java编译器无法自动将太大的方法拆分为子方法。您必须自己在源代码级别进行操作。
使用JSP,JSP编译器将每个JSP转换为一个具有单个(大型) Java方法的类,除非您可以通过将一些逻辑移到单独的方法、类或.使用“动态包含”的JSPs;参见https://stackoverflow.com/a/5484509/139985。
https://stackoverflow.com/questions/58444809
复制相似问题