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行代码隐藏和重启即可完全运行成功,bootStrap文件大小为149k。当我注释或删除4-5行代码时,它将不会出现任何错误!
发布于 2014-06-17 14:15:06
Java Virtual Machine有一个limitation,它的方法不能大于64k (65536字节)。此post详细描述了此限制。
解决这个问题的最好方法是简单地将您的大型方法拆分成较小的方法,这通常是一个好的实践。
还要注意,JVM JIT编译器不会编译大于8K的方法。但是,您可以使用-XX:-DontCompileHugeMethods选项更改此行为。
发布于 2020-05-24 19:51:28
问题:在Jenkins管道中遇到了以下异常错误:org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: General error during class generation: Method code too large! java.lang.RuntimeException: Method code too large!
解释:单个方法字节码限制64kB是根本原因。Java虚拟机对类有隐含的限制,根据性能和语言限制,必须遵循和限制,例如:帧中操作数堆栈的大小,字段和方法名称的长度,类中可以声明的方法的数量等。你可以在Oracle JVM documentation上遵循这个“检查清单”。在这个场景中,你得到了方法大小的限制。
Solution:为了解决这个问题,只需将类方法分离到共享库或子内部/外部类(例如Utils.Groovy )中,然后将该库导入到您的主类中。一般来说,代码应该是可读的、精简的和高层次的。如果太长,则使用面向对象的体系结构导出功能,您还可以获得可读和可维护的代码。
https://stackoverflow.com/questions/24256316
复制相似问题