【问题标题】:Accessing symbol table in .class files访问 .class 文件中的符号表
【发布时间】:2012-06-14 07:10:28
【问题描述】:

对于 Java 中的任意代码库,我想(从概念上)创建一个表,其中包含符号和类型之间的 USES 和 USED-BY 关系。符号表有我需要的信息。然而,编写前端似乎是一项艰巨的任务,并有可能将我的项目变成一个更大的子项目。没有理由这样做,在我看来,因为字节码,Java .class 文件必须在其中包含每个类的这样一个符号表,以便它可以解析类型和引用。

我的问题是——

如何以编程方式访问一组符号表中的符号表 .class 文件,以便我可以创建我想要的 USES / USED-BY 表?已 任何人都已经这样做了(肯定答案是肯定的)并且是工具 这样做还不是图书馆?

【问题讨论】:

    标签: java bytecode symbol-table


    【解决方案1】:

    看看ASM bytecode manipulation framework。这个tutorial 有一个从字节码中检索依赖关系的例子。虽然如果您使用最近引入的RemappingClassAdapter,它可以大大简化。

    【讨论】:

    • 是的,我知道 ASM 字节码框架,我可能最终会使用它,但我想我的问题是,你是否碰巧知道所有关于使用它的论文,其中一些可以在他们的网站上找到,如果有任何封面这样做 - 从字节码中的符号表中提取信息?或者有没有更好的方法来做我想做的事情? TIA
    • 我的旧教程涵盖了依赖类的提取,我添加了一个指向我的答案的链接。 “符号表”(它实际上被称为常量池)的问题在于它脱离了上下文,你无法判断常量从哪里使用以及用于什么。
    【解决方案2】:

    你可以得到带有javap的字节码,然后它只是文本解析。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-28
      • 2010-10-04
      • 2012-08-28
      • 2013-12-05
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多