如何在我自己的Java GUI中从JAR文件中查看源代码?
-
28-09-2019 - |
题
我有一个带有一个列表框的GUI来显示类中的方法列表。我可以使用反思来实现它。但是,我可以在选择方法名称时查看另一个文本区域中的源代码吗?
我知道分解器。但是我不想在他们的窗口中看到源代码。
我想使用一些第三部分lib,以便我可以在自己的GUI中看到特定方法的源代码。
请建议如果有API可用。
解决方案
您将需要某种分解器,您可以链接到。我不确定是否有库,但这是 JD Java分解器.
请记住,您会丢失可变名称等,因此,如果您对所得的源代码进行了反编译,则可能不那么可读。
如果您可以访问源,则可以将其链接到类文件,并在链接的源文件中找到所选的方法源。这可以通过简单的一通源文件来实现。
您最大的问题是确定方法何时结束,一个简单的解决方案是计算 {
'沙 }
并确定何时 {
该方法声明已关闭。
其他提示
这是一个古老的问题,但是看到过去一年的分解局景观发生了很大变化,我觉得这值得复活。
Procyon 是一个开源框架,其中包含Java分解器。它是用java编写的,可以很容易地将分解器API集成到另一个应用程序中。实际上,已经有两个第三方GUI前端,包括 Secureteam Java分解器.
CFR 尚无源代码可用,但它也是一个出色的反编译器。它也是用Java编写的,虽然我没有尝试将其与现有应用程序集成在一起,但肯定应该有可能。
我曾经创建了包含其自己的源代码查看器的应用程序。我认为这是分解器的一个很好的选择,可以带来相当依赖性。
我正在使用Netbeans,所以包装 .java
文件就像更改一个过滤器选项一样容易。我检查了Java属性以查找JAR文件并将其扫描,就像Java源文件的任何zip文件一样。通过这种方法,具有带有源文件的jtreettectare的GUI,并且显示源代码的JTEXTAREA是微不足道的。
我相信您可以再增加一步 - 剪切源以仅包含所选方法。我认为它应该归结为简单的解析器,该解析器计算出打开和关闭的括号。
如果您需要它,我将离开较早的答案,但是Jode很长一段时间没有更新。搜索,我找不到任何开源或图书馆形式可用的反编译器。
jode 可能只是您想要的。核心分解器在GNU LGPL下以库的形式发布,因此您可以在没有问题的情况下将其集成到程序中。