我正在寻找一个批处理反编译Java类的程序。 我找到了JAD,但它不支持Java的某些新功能,该程序的好处是它可以从命令行执行并自动生成* .java文件。

我还找到了JD-GUI。 它支持Java的大多数功能,但是缺点是它不能执行批处理。 您需要使用该程序打开类文件,然后单击"保存"。

有没有办法让JD-GUI像JAD一样进行批处理?

强烈要求对JD-GUI进行命令行反编译,但尚未实现。也许您可以同时使用以下解决方法:

jar(或zip)所有要反编译的类。

启动JD-GUI并打开您的jar(zip)档案。

使用"文件"-"保存JAR源"菜单选项。它将从存档中反编译所有类,并将其源保存到另一个zip文件中。

不幸的是,我还没有看到任何具有命令行支持的优秀开源JD-GUI替代品,因此,我认为上述内容与现在一样好。

我刚刚发现了使用JD的CLI包装器-请参见github.com/nviennot/jd-core-java

这个看起来也很有前途(实际上是Rob W提到的那一个),它还提供了一个库。 但是我还没有测试过:github.com/kwart/jd-cmd

现在,该主页具有拖放反编译器。 你知道这意味着什么... ;)

我没有该选项来保存JAR源

我可以建议将Jad与JadRetro结合使用-当然,它不能使Jad产生Java泛型,但是反编译的源代码(包括Java 1.5+类)在功能上与原始代码等效(并且在大多数情况下可以反向编译)。

它的使用很简单:

jadretro * .class
jad .class

笔记:

1. JadRetro可以在这样的批处理模式下使用:jadretro ...

2.如果您使用的是jad v1.5.8e(而不是最新的v1.5.8g),则应将" -c"选项传递给jadretro(否则jad将拒绝反编译Java 1.5+类)。

文件>保存所有源将把所有文件保存在主目录中。

看起来您可以使用命令行一次启动带有一堆库的GUI,然后按CTRL + ALT + s / CTRL + w每个选项卡以快速保存/关闭。它不是自动化的,但是在反编译一堆依赖项时是可以容忍的。 (请注意," ^"只是在Windows中执行多行命令的一种技巧。)

"c:\jd-gui-0.3.6.windows\jd-gui.exe" ^
c:\my-libs\lib-a.jar ^
c:\my-libs\lib-b.jar ^
c:\my-libs\lib-c.jar ^
c:\my-libs\lib-d.jar ^
c:\my-libs\lib-e.jar