【问题标题】:How to view the source code from jar file in my own JAVA GUI?如何在我自己的 JAVA GUI 中查看 jar 文件中的源代码?
【发布时间】:2010-08-16 12:53:25
【问题描述】:

我有一个带有一个列表框的 GUI,用于显示类中的方法列表。 我可以使用反射来实现它。 但是我可以在选择方法名称时在另一个文本区域中查看源代码吗?

我知道反编译器。但我不想在他们的窗口中看到源代码。

我想使用一些第三方库,以便我可以在自己的 GUI 中看到特定方法的源代码。

请建议是否有可用的 API。

【问题讨论】:

    标签: java decompiling decompiler


    【解决方案1】:

    您将需要某种可以链接到的反编译器。我不确定是否有任何库,但这里有一个指向 JD Java Decompiler 的链接。

    请记住,您在编译过程中会丢失变量名等,因此如果您反编译生成的源代码可能不太可读。

    如果您可以访问源代码,则可以将其链接到类文件,并在链接的源文件中找到所选方法源。这可以通过对源文件进行简单的一次性解析来实现。

    您最大的问题将是确定方法何时结束,一个简单的解决方案是计算{} 并确定方法声明的{ 何时关闭。

    【讨论】:

    • 我有一个解决方案。但是想检查一下是否可行。正如您所说,我们可以使用一些反编译器并获得完整的源代码。然后我们可以使用eclipse库使用AST解析代码,然后找到对应的方法。理论上这个解决方案应该可以工作。但我想花一些精力来使用 eclipse 库来实现。感谢大家帮助我找到解决方案。
    【解决方案2】:

    这是一个老问题,但鉴于反编译器格局在过去一年中发生了显着变化,我觉得值得重新考虑。

    Procyon 是一个开源框架,其中包含 Java 反编译器等。它是用 Java 编写的,反编译器 API 可以很容易地集成到另一个应用程序中。其实第三方GUI前端已经有两个了,包括SecureTeam Java Decompiler

    CFR 还没有可用的源代码,但它也是一个出色的反编译器。它也是用 Java 编写的,虽然我没有尝试将它与现有应用程序集成,但它肯定是可能的。

    【讨论】:

      【解决方案3】:

      我曾经创建了包含它自己的源代码查看器的应用程序。我认为它是反编译器的一个很好的替代品,它可以带有相当的依赖关系。

      我使用的是 NetBeans,因此打包 .java 文件就像更改一个过滤器选项一样简单。我检查了 java 属性以找到 jar 文件,并将其作为 java 源文件的任何 zip 文件进行扫描。使用这种方法,让带有源文件的 JTreeTable 和显示源代码的 JTextArea 的 GUI 变得微不足道。

      我相信您可以通过再添加一个步骤来做同样的事情 - 剪辑源以仅包含选定的方法。我认为它应该归结为简单的解析器,一个计算开括号和右括号的解析器。

      【讨论】:

        【解决方案4】:

        如果您需要,我将保留较早的答案,但 JODE 已经很长时间没有更新了。环顾四周,我找不到任何开源或以库形式提供的反编译器。

        JODE 可能正是您想要的。核心反编译器作为 GNU LGPL 下的库发布,因此您可以毫无问题地将其集成到您的程序中。

        【讨论】:

          猜你喜欢
          • 2012-07-01
          • 2021-07-12
          • 2013-06-07
          • 1970-01-01
          • 2011-09-08
          • 1970-01-01
          • 2011-11-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多