1

如何在开始方法体的 Java .class 文件中查找

前任。

package com.test;

class Hello
{

    public static boolean isTrue()  {
        return true;
    }

    public static void main(String args[])
    {

    }
}

我想知道isTrue()Hello.class 上的启动方法主体在哪里

我可以在地址 0x0205 处找到带有十六进制编辑器的 04 0C (字节码:iconst_1 ireturn ),但我希望以编程方式将这个值用于任何名称的方法。

4

1 回答 1

1

在 JVM 类文件格式中,偏移量不存储到特定部分。相反,每个项目都有自己的长度,并且是按顺序解析的。这意味着为了找到方法代码,您至少必须能够解析常量池以获取每种类型并计算字符串长度,因为方法位于常量池之后。

此时,您不妨使用功能齐全的类文件解析器。那里有很多图书馆。

PS 在字节码级别,方法不是通过名称唯一标识,而是通过(名称,描述符)对。多个方法可以具有相同的名称。字段也是如此。

于 2013-04-14T19:10:26.450 回答