【发布时间】:2010-08-16 12:53:25
【问题描述】:
我有一个带有一个列表框的 GUI,用于显示类中的方法列表。 我可以使用反射来实现它。 但是我可以在选择方法名称时在另一个文本区域中查看源代码吗?
我知道反编译器。但我不想在他们的窗口中看到源代码。
我想使用一些第三方库,以便我可以在自己的 GUI 中看到特定方法的源代码。
请建议是否有可用的 API。
【问题讨论】:
标签: java decompiling decompiler
我有一个带有一个列表框的 GUI,用于显示类中的方法列表。 我可以使用反射来实现它。 但是我可以在选择方法名称时在另一个文本区域中查看源代码吗?
我知道反编译器。但我不想在他们的窗口中看到源代码。
我想使用一些第三方库,以便我可以在自己的 GUI 中看到特定方法的源代码。
请建议是否有可用的 API。
【问题讨论】:
标签: java decompiling decompiler
您将需要某种可以链接到的反编译器。我不确定是否有任何库,但这里有一个指向 JD Java Decompiler 的链接。
请记住,您在编译过程中会丢失变量名等,因此如果您反编译生成的源代码可能不太可读。
如果您可以访问源代码,则可以将其链接到类文件,并在链接的源文件中找到所选方法源。这可以通过对源文件进行简单的一次性解析来实现。
您最大的问题将是确定方法何时结束,一个简单的解决方案是计算{ 和} 并确定方法声明的{ 何时关闭。
【讨论】:
这是一个老问题,但鉴于反编译器格局在过去一年中发生了显着变化,我觉得值得重新考虑。
Procyon 是一个开源框架,其中包含 Java 反编译器等。它是用 Java 编写的,反编译器 API 可以很容易地集成到另一个应用程序中。其实第三方GUI前端已经有两个了,包括SecureTeam Java Decompiler。
CFR 还没有可用的源代码,但它也是一个出色的反编译器。它也是用 Java 编写的,虽然我没有尝试将它与现有应用程序集成,但它肯定是可能的。
【讨论】:
我曾经创建了包含它自己的源代码查看器的应用程序。我认为它是反编译器的一个很好的替代品,它可以带有相当的依赖关系。
我使用的是 NetBeans,因此打包 .java 文件就像更改一个过滤器选项一样简单。我检查了 java 属性以找到 jar 文件,并将其作为 java 源文件的任何 zip 文件进行扫描。使用这种方法,让带有源文件的 JTreeTable 和显示源代码的 JTextArea 的 GUI 变得微不足道。
我相信您可以通过再添加一个步骤来做同样的事情 - 剪辑源以仅包含选定的方法。我认为它应该归结为简单的解析器,一个计算开括号和右括号的解析器。
【讨论】:
如果您需要,我将保留较早的答案,但 JODE 已经很长时间没有更新了。环顾四周,我找不到任何开源或以库形式提供的反编译器。
JODE 可能正是您想要的。核心反编译器作为 GNU LGPL 下的库发布,因此您可以毫无问题地将其集成到您的程序中。
【讨论】: