如何使用 ASM java 库在 Jar 中存在的 class 的内部 class 中获取所有方法?

How to get all methods inside a inner class of a class which is present in Jar using ASM java library?

我想在内部 class.

中获取方法

这就是我所做的。我使用 JarFile class 获取 Jar 中的所有条目。现在,对于每个条目,我都创建了输入流,并使用 ASM ClassReader class 获取了 class 中的所有方法。

现在的问题是 class 中有内部 classes。我可以列出所有内部 class 节点,但内部 class 节点不包含其中的方法信息。

要获取内部方法 class 有两种方法 AFAIK。生成内部 class 的输入流并将其传递给 ClassReader class 或给出内部 class 的 class 名称。在第二个选项中,必须加载内部 class。但是我的 Jar 不在我当前的 class 路径中,所以我不知道如何加载它。

所以有人可以告诉我有没有办法制作内部 class 的输入流或加载当前 class 路径之外的 classes。

您可以只用 byte[] 将 class 加载到 ClassReader 中,因此您只需要阅读代表内部 [=] 的适当 .class 文件22=](你可以在visitInnerClass事件中获得的名字)并将其转换为byte[])。

作为替代方案,您可以读取字节,然后将其加载到 ClassLoader,然后 ClassReader 将能够从那里加载它。