gpt4 book ai didi

java - 识别 `` 方法代码太大``起源

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:48:23 26 4
gpt4 key购买 nike

所以我遇到了

MY: WARNING cannot transform class XYZ
java.lang.RuntimeException: Method code too large!
at org.objectweb.asm.MethodWriter.a(Unknown Source)
at org.objectweb.asm.ClassWriter.toByteArray(Unknown Source)
at ...

我知道 Method code too large! exception using ASMthe project it links to .

但是,我已经获得了 ASM 的修改版本以供使用,因此,使用该项目并不是一个真正的选择。

这将需要我手动分解有问题的方法。值得庆幸的是,这只发生在一个库类中(到目前为止 -.-),所以它应该是可管理的。

不过,我想检测和报告太大的方法。所以我可以更轻松地确定我必须拆分的内容。 (坦率地说,我不明白为什么默认情况下不提供此信息并出现此错误。)

已经写了一个MethodVisitor,它将所有 super 调用包装在try-catch block 中,并在异常捕获时报告正在处理的方法,但因为它是ClassWritertoByteArray 方法抛出错误,而用于遍历字节码的MethodVisitor 被创建为其中的局部变量,我还没有想到了解如何插入它。无法覆盖 toByteArray 方法,因为它似乎访问类私有(private)字段并且简单地复制失败,因为我也非常需要复制包的其余部分。

我还没有尝试检测 ClassWriter 本身,但在开始之前,我想知道是否有更合理的方法来找出哪个方法太大。

最佳答案

仅供引用,this commit添加一个包含此信息的新异常。 6.2.1 已经发布。

关于java - 识别 `` 方法代码太大``起源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48151987/

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