我准备在这个可怕的旧的Java网络应用程序上做一些工作,我的朋友刚才继承了。
在我设置了tomcat,导入项目以及所有这些到我的eclipse工作区后,我得到了这个错误,即servlet中的方法超过了65536字节的限制。
该方法可能会超过该限制,它是几千个位置。但问题是,我之前在这个应用程序上工作时没有收到此错误,并且根据提交日志,从那时起就没有代码添加到servlet中。
可能是因为这次我正在研究macbook吗?上次我在应用程序上工作时,我使用了带有ubuntu的HP桌面。不同的java版本,cpu架构?这甚至可能吗?
除了重构代码之外,我能做些什么吗?
答案 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)
可以使方法更小的一件事是关闭调试。打开调试时,每一行(带代码)都有一个标记该行的语句。