尝试加载使用 ASM 生成的类时,我收到了预期的 ClassVerifyErrors。在进一步检查中,我可以看到 jvm 是正确的,并且正在讨论的方法具有无效的 MAX_STACK 值。奇怪的是我正在使用自动计算堆栈和最大本地选项,所以这应该不是问题......带有无效选项的方法非常简单,但结果是错误的字节码。
我已经用预期的方法编写了一个类,并将我的 asm 生成的类与 javac 生成的类进行了比较,字节码匹配唯一的错误是最大堆栈为 0,这是错误的,而 javac 设置的值为 2。
我想避免自己计算 tha max stack/locals。