33

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

我还找到了 JD-GUI。它支持Java的大部分特性,但缺点是不能做批处理。您需要使用程序打开类文件,然后单击保存。

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

4

5 回答 5

58

JD-GUI 的命令行反编译是一个非常需要的功能,但尚未实现。也许您可以同时使用以下解决方法:

  1. jar(或 zip)你想要一起反编译的所有类。
  2. 启动 JD-GUI 并打开您的 jar (zip) 存档。
  3. 使用“文件”-“保存 JAR 源”菜单选项。它将反编译您存档中的所有类并将其源代码保存到另一个 zip 文件中。

不幸的是,我还没有看到任何具有命令行支持的优秀开源 JD-GUI 替代方案,所以我认为上述内容目前已经很好了。

于 2009-09-06T01:23:43.247 回答
3

我可以推荐将 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+ 类)。

于 2009-12-16T07:06:13.407 回答
1

看起来您可以使用命令行一次启动带有一大堆库的 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
于 2014-02-10T20:12:42.703 回答
1

File > Save all sources 将所有文件保存在主目录中。

于 2018-05-12T08:17:10.030 回答
1

JD-GUI 可以将类文件批量导出为 .java 文件,压缩成 jar 文件。

但是这个功能不是命令行控制的,而是鼠标点击,不稳定,有时会卡住。

您可以使用 jd-cli ( https://github.com/kwart/jd-cli/releases/tag/jd-cli-1.2.0 )。

  1. 准备你的 .jar 文件(包含 classes )
  2. 输入: jd-cli target.jar -od jar_result -g ALL

你会得到一个压缩的java源代码文件。

于 2021-03-17T07:35:07.410 回答