4

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

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

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

请建议是否有可用的 API。

4

4 回答 4

4

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

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

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

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

于 2010-08-16T13:56:19.640 回答
1

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

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

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

于 2013-11-07T14:41:49.577 回答
0

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

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

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

于 2010-08-16T14:05:10.713 回答
0

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

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

于 2010-08-16T14:18:52.707 回答