达到65536字节限制

时间:2011-05-06 07:58:04

标签: java servlets legacy-code

我准备在这个可怕的旧的Java网络应用程序上做一些工作,我的朋友刚才继承了。

在我设置了tomcat,导入项目以及所有这些到我的eclipse工作区后,我得到了这个错误,即servlet中的方法超过了65536字节的限制。

该方法可能会超过该限制,它是几千个位置。但问题是,我之前在这个应用程序上工作时没有收到此错误,并且根据提交日志,从那时起就没有代码添加到servlet中。

可能是因为这次我正在研究macbook吗?上次我在应用程序上工作时,我使用了带有ubuntu的HP桌面。不同的java版本,cpu架构?这甚至可能吗?

除了重构代码之外,我能做些什么吗?

4 个答案:

答案 0 :(得分:6)

  

除了以外我还有什么可以做的吗?   重构代码?

没有。重构代码。没有方法应该那么久。永远。 Write small methods!

说真的:任何IDE都会指导您完成重构,但需要完成。您可能还想阅读Refactoring: Improving the Design of Existing Code以获取指导。

答案 1 :(得分:1)

你正在使用的cpu无关紧要。您现在使用的编译器最有可能产生另一个输出(超出限制)。

我肯定会重构,但您可以尝试切换到上次编译代码时使用的编译器。

答案 2 :(得分:1)

如果代码是由JSP页面生成的,则可能超过64k method limit。像Weblogic这样的Web容器实际上会解决这个问题。 Tomcat不会,也许你以前使用过不同的Web容器?要解决此问题,this page建议您更改静态包含:

<%@ include file="test.jsp" %>

动态包括这样:

<jsp:include page="test.jsp" /> 

更新:因为你正在处理一个servlet,所以你可能运气不好。这是JVM规范的限制,请参阅Why does Java limit the size of a method to 65535 byte?我不相信您会找到一个可以解决它的编译器。您可能ProGuard有一些好运,以尽量减少编译后的大小。

答案 3 :(得分:0)

可以使方法更小的一件事是关闭调试。打开调试时,每一行(带代码)都有一个标记该行的语句。