【问题标题】:How can I get the function sinatures from a jar file?如何从 jar 文件中获取函数 sinatures?
【发布时间】:2010-10-04 04:49:46
【问题描述】:

在 Eclipse 或 NetBeans 中,当您“控制 + 单击”进入一个函数时,您至少可以看到它的整个签名,即使它位于 jar 文件中。

我想知道是否可以编写一个工具来从 jar 文件中提取所有函数签名。有这方面的 API 吗?

我知道jDepend 似乎为此提供了功能。不过,我相信有一些更通用的方法可以做到这一点。

【问题讨论】:

    标签: java jar binary method-signature


    【解决方案1】:

    我认为javap 工具正是您所追求的。

    javap -classpath ./lib/ MyClass 之类的东西应该可以解决问题。

    另请参阅 this tutorial 和 javap 的参考信息(google javap,我没有足够的声誉来发布超过 1 个链接)。

    【讨论】:

    • 这太棒了。我不知道。谢谢! (+1)
    【解决方案2】:

    jar 是 zip 文件,因此您可以使用 zip 例程获取 jar 文件中每个类的字节码定义。

    然后,给定字节码,您可以使用像javassist这样的字节码分析工具将字节码加载到ClassFile中,然后获取MethodInfo,然后您可以随意处理。

    【讨论】:

    • 这是 /not/ 从 jar 文件中识别方法签名的方法。请参阅 Caspar 的回复。
    • @Hernal,取决于你需要什么。
    • 感谢您的帮助。 javassist 对我来说没问题。但是,我有一个问题想在这里补充:你知道如何从“MethodInfo”中获取 retrn 类型名称吗?我使用了“getDescriptor()”,但返回的字符串如下所示:(Ljava/io/File;)V 它很接近但仍然不是我想要的“java.io.File”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    • 2017-01-26
    • 2015-01-12
    • 1970-01-01
    • 2019-05-23
    • 2018-06-19
    • 2012-12-23
    相关资源
    最近更新 更多