如何在我自己的JAVA GUI中查看jar文件中的源代码?

时间:2010-08-16 12:53:26

标签: java decompiling decompiler

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

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

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

请建议是否有可用的API。

4 个答案:

答案 0 :(得分:4)

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

请记住,在编译期间会丢失变量名等,因此如果您反编译生成的源代码可能会更不易读。

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

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

答案 1 :(得分:1)

这是一个老问题,但看到反编译景观在过去一年中发生了显着变化,我觉得值得复活。

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

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

答案 2 :(得分:0)

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

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

我相信你可以通过增加一步来做同样的事情 - 剪切源只包含选定的方法。我认为它应该归结为简单的解析器,一个计算开始和结束括号。

答案 3 :(得分:0)

如果您需要,我将离开之前的答案,但JODE在很长一段时间内没有更新。搜索周围,我找不到任何开源的或以库形式提供的反编译器。

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