提问者:小点点

配置 Eclipse/Jetty 以解决此问题:方法代码超过 65535 字节限制


我正在Eclipse中开发一个Java站点,该站点依赖于JSP文件和servlet,在开发过程中我使用一个插件(Eclipse Jetty 5.0.0)在Eclipse中运行该站点。我在浏览器中加载一个页面时得到了这个异常:

XXXXX_jsp.java]<|The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes limit

我最终将在Tomcat上运行这个站点,并且我能够通过在Tomcat中添加以下内容来解决此问题 tomcat_install/conf/web.xml中的JspServlet:

   <init-param>
        <param-name>mappedfile</param-name>
        <param-value>false</param-value>
    </init-param>

但是,我做了相当的搜索,无法找到类似的配置解决方案,使其在Eclipse/Jetty中工作,我可以将该方法分解为几个较小的方法,但我想避免它。希望使用配置(而不是代码更改)来解决这个问题。


共1个答案

匿名用户

JettyJspServlet 支持与 Tomcat 的 JspServlet 相同的 init-params。

<code>mappedfile</code>init param在那里(只需将其设置为无效值,如“foo”,并查看弹出的错误消息“Warning:Invalidvalue for The initParam mappedfile。将使用默认值“false”)

您需要引用现有的JSP servlet并将这些init参数添加到您的WEB-INF/web.xml

<servlet id="jsp">
  <servlet-name>jsp</servlet-name>
  <init-param>
    <param-name>mappedfile</param-name>
    <param-value>false</param-value>
  </init-param>
</servlet>

或者使用此参数创建一个新的webdefault.xml,并让您的webapp将其与${jetty.base}/webapp/${webappid}. xml中的XML可部署项一起使用

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
   <Set name="contextPath">/foo</Set>
   <Set name="war"><Property name="jetty.webapps"/>/foobar.war</Set>
   <Set name="defaultsDescriptor"><Property name="jetty.base"/>/etc/mywebdefault.xml</Set>
</Configure>

" mappedfile "初始化参数:

它似乎在中间*中从生成正常打印语句切换。java文件到1行打印语句
这意味着您在JSP文件中处于JavaC支持的前沿。*的大小有很多硬性限制。javac上的java文件,而您的JSP文件现在正在克服这些限制。

一些(但不是全部)javac限制:

    < li >静态初始值设定项大小:最大65535字节。 < li >方法或构造函数长度:最大65535字节。(JSP文件出错的那个) < li >方法或构造函数参数长度:最多255个参数。 < li >本地变量大小:最大65535字节。 < li >合成参数长度:最多255个参数。 < li >阵列尺寸:最大255。


但是如果你需要维护/编辑那个JSP文件,要知道你几乎肯定不能添加它(只能删除)。
将来你可能不得不用导入将它重构成更小的部分。