如何反编译到java文件intellij的想法

IDEA有一个很棒的内置function – 反编译器。 它工作得很好。我可以复制源代码,但我找不到将所有反编译的java类提取到java文件的选项。
这个项目有很多java类和包,所以我将长时间手动复制它。
有谁知道如何提取到java源文件。 谢谢

要从jar命令行使用IntelliJ Java反编译器,请按照此处提供的说明操作: https : //github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/engine

截至2017年8月和IntelliJ V2017.2,已接受的答案似乎不再完全准确:没有fernflower.jar可供使用。

jar文件名为java-decompiler.jar ,不包含主清单…而是可以使用以下命令(从Mac安装):

 java -cp "/Applications/IntelliJ IDEA.app/Contents/plugins/java-decompiler/lib/java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler 

(您将获得错误的使用命令,但它确实有效)。

按照IntelliJ JD插件的说明进行操作。 或者查看以下说明中的摘录。

 java -jar fernflower.jar []+  

+表示1次或更多次
:包含要反编译的文件的文件或目录。 目录以递归方式扫描。 允许的文件扩展名是class,zip和jar。
:目标目录

例:

 java -jar fernflower.jar -hdc=0 -dgs=1 -rsy=1 -lit=1 c:\Temp\binary\ -e=c:\Java\rt.jar c:\Temp\source\ 

请注意,如果您为源传递“.jar”文件,它将在目标中创建另一个“.jar”文件,但是,在新的“.jar”文件中,文件将是.java而不是.java。类文件(它不会爆炸jar)。

您可以使用其中一种(您可以在线使用它们或下载它们,有关于它们的一些信息): http : //www.javadecompilers.com/

一个IntelliJ IDEA使用的是fernflower,但是它无法处理最近的事情 – 比如String / Enum开关,generics(没有亲自测试这个,只读过它),…我刚从上面的网站上试过cfr结果与内置的反编译器相同(除了我class上的Enum开关)。

IntelliJ IDEA的反编译器并没有考虑到这种用法。 它只是为了帮助程序员查看他们正在开发的java类的字节码。 为了反编译你没有源代码的许多类文件,你需要一些专门用于这个工作的其他java反编译器,并且很可能是独立运行的。 如果你谷歌你应该找到一堆。

前段时间我使用JAD(JAva Decompiler)来实现这一点 – 我认为IntelliJ的反编译器并没有考虑到出口。 它更像是一种帮助查看源不可用的类的工具。

JAD仍然可供下载,但我认为不再有人维护它了: http : //varaneckas.com/jad/

它有很多插件,即Jadclipse(你猜对了,在Eclipse中使用JAD的一种方法 – 看看代码不可用的反编译类:))。

尝试

https://github.com/fesh0r/fernflower

从下载jar

http://files.minecraftforge.net/maven/net/minecraftforge/fernflower/

命令:

 java -jar fernflower.jar -hes=0 -hdc=0 C:\binary C:\source 

将jar文件放在文件夹C:\ binary中,将提取源并将其打包在C:\ source中的jar中。

请享用!

我使用JD-GUI将所有反编译的java类提取到java文件中。