gpt4 book ai didi

java - Java 中的类格式错误

转载 作者:搜寻专家 更新时间:2023-11-01 01:55:09 25 4
gpt4 key购买 nike

我正在尝试帮助遇到 ClassFormatError 的客户。错误消息说

bytecode array size > 65535 at offset=66370 

堆栈跟踪表明在尝试调用实用程序类中的静态方法时发生错误。我无法在自己的系统上重现错误。

我尝试使用谷歌搜索问题(search=classformaterror "bytecode array size",包括引号)并找到其他软件的错误报告,但没有任何帮助。我也尝试在这里搜索,但找不到涉及此特定错误消息的结果。 (也许我只是没找到他们......)

知道是什么导致了这个问题吗?我无法发布代码或实际堆栈跟踪,因为它是专有的。

在此先感谢您给我的任何指示。

最佳答案

进一步阐述 Jon Skeet 的回应:

类文件格式为每个方法的字节码数组指定一个 4 字节长度的字段,但实际上某些结构(局部变量表、行号表和异常表)将其限制为 65535。

前两个是可选的,如果你在没有调试信息的情况下编译你的类,则不会被编译,但第三个是强制性的。当然如果方法后半部分没有异常处理,编译器可能察觉不到。甚至更糟的是,它可能会溢出并编译损坏的 try-catch block 。

无论哪种方式,实用程序类中的一个或多个方法都太大了,即使没有硬编码长度限制,也可能应该拆分。

更新:当然在代码 validator 的描述中,代码长度明确限制在 65536 字节。但不可避免地会有一些实现将其更多地视为指南。 :)

关于java - Java 中的类格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11850969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com