当前位置: 首页 > 知识库问答 >
问题:

Groovy中的方法代码太大

姚建树
2023-03-14
2014-06-17 11:22:18,622 [Thread-11] ERROR compiler.GrailsProjectWatcher  - Compilation Error: startup failed:
General error during class generation: Method code too large!

解决方案是什么?只有4-5行代码隐藏并重新启动,然后完全成功运行,引导文件大小为149k。当我注释或删除4-5行代码时,它将无误运行!

共有2个答案

孟品
2023-03-14

问题:刚刚Jenkins管道中出现以下异常错误:org.codehaus.groovy.control.MultipleCompilationErrorsException:启动失败:类生成过程中的一般错误:方法代码太大!java.lang.RuntimeException:方法代码太大!

说明:根本原因与单个方法的字节码限制为64kB有关。Java虚拟机对类有隐含的限制,必须遵循这些限制,并根据性能和语言限制加以限制,例如:帧中操作数堆栈的大小、字段和方法名称的长度、类中可以声明的方法的数量等等。。。您可以在Oracle JVM文档中遵循此“检查表”。您得到了此场景的方法大小限制。

解决方案:为了解决这个问题,只需将类方法分离为共享库或子内部/外部类(例如Utils. Groovy)并在您的主类中导入该库。一般来说,代码应该是可读的、精益的和高级的。如果它太长,请使用面向对象的架构导出功能,您也可以获得可读和可维护的代码。

董俊
2023-03-14

Java虚拟机有一个限制,即方法不能大于64k(65536字节)。这篇文章详细描述了这一限制
解决此问题的最佳方法是简单地将大型方法拆分为小型方法,这通常是一种很好的做法。

另请注意,JVM即时编译器不会编译大于8K的方法。但是,您可以使用-XX:-DontCompileHugeMethod选项更改此行为。

 类似资料:
  • 我正在构建一个grails应用程序,groovy控制器抛出了一个错误——“方法代码太大” 代码: if中的整个代码将重复15次,因为有15个度量(params.metric),因此会出现错误。查找错误后,唯一的选择是拆分代码。 所以我在grails中使用“重定向”操作拆分它,并将为每个if-fe语句使用不同的方法,以防止方法代码太大 新代码: 但是,这不起作用,甚至没有抛出错误。为什么重定向不起作

  • 如果Grails模板大小太大,并且使用的g:标记太多,无法通过模板引擎编译,那么会引发错误方法代码太大?

  • 问题内容: 在Groovy中是否可以使用匿名代码块?例如,我正在尝试将以下Java代码转换为Groovy: 我能想到的最接近的翻译如下: 我知道匿名代码块通常是一种反模式。但是具有类似“ inputStream0”和“ inputStream1”之类的变量的变量也是一种反模式,因此对于我正在处理的这段代码,匿名代码块会有所帮助。 问题答案: 您可以在Groovy中使用匿名代码块,但这些代码和闭包之

  • 我有一个gsp文件,其中包含1800行代码和从该视图渲染的两个模板。在我添加几个if条件之前,该视图工作得非常好。 堆栈跟踪如下:

  • 我编写了一个Groovy扩展库,它为List类添加了额外的方法。我试图用Spock编写测试,但我无法让我的一些测试工作。 代码 有人能解释一下为什么Spock认为没有被调用吗?还是我错过了什么? 谢了。

  • 问题内容: 我正在尝试运行我的应用程序,但在编译时出现错误,当最小字符超过时,代码太大。 那么,除了JSP:include还是将页面分成多个部分,还有其他方法吗?如何在Glassfish服务器的编译中设置JSP页面的最大字符数限制? 谢谢 问题答案: Java类的大小限制为(64k),此问题中对此进行了详细描述:Java类/异常表的最大大小 因此,这是一个硬限制,不应覆盖(如果内部地址为2字节,从