如何使用命令提示符将jar文件反编译为.java文件

23

我该如何从命令提示符中反编译一个JAR(.class二进制文件)到.java源文件?


3
你需要找一个Java反编译器。即使如此,它也不会与用于创建它的.java文件相同。编译是单向的。 - resueman
我尝试使用JD插件,但是使用它只能查看.class文件。因此,我正在寻找将.class jar文件编译为.java文件,以便我可以将它们作为项目导入到我的Eclipse中并进行调试。 - Karuna
1
如果不一定要使用命令行,我相信JD-GUI有一个选项可以导出源文件的JAR包,然后您可以将其解压。 - user253751
明白了,谢谢immibis和resueman的帮助。 - Karuna
3个回答

24

我发现jd-cmd非常适合这项工作,可以递归地在子文件夹中处理多个文件。要在命令行上反编译一组文件,请运行以下命令:

  1. 此处下载JAR文件,作为jd-cmd README.md 文件
  2. 创建输出Java文件的目录。
  3. 运行以下命令来反编译文件:java -jar jd-cli.jar -od <my-output-folder> <my-input-folder>

5
JD-CMD GitHub项目声称可以做到这一点。但是,我认识的大多数人都使用JD-GUI

JD-Core是一个库,可以从一个或多个“.class”文件中重构Java源代码。 JD-Core可用于恢复丢失的源代码并探索Java运行时库的源代码。支持Java 5的新功能,例如注释,泛型或类型“枚举”。JD-GUI和JD-Eclipse包括JD-Core库。

我需要说明的是,当源文件编译时,像变量赋值和这些变量的名称之类的东西会被改变。同样,语法糖会变成它实际上是什么(例如,x += i会变成x = x + i)。

5

2021年,命令行似乎更加简单:

将目标jar文件反编译到jar_result文件夹,并使用ALL级别输出日志。

$ jd-cli target.jar -od jar_result -g ALL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接