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

2022-08-31 10:38:01

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


答案 1

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

jar 文件被调用,并且不包含主清单...相反,您可以使用以下命令(从Mac安装):java-decompiler.jar

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

(你会得到错误的使用命令,但它确实有效)。


答案 2

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

java -jar fernflower.jar [<source>]+ <destination>

+表示 1 次或更多次
:包含要反编译的文件的文件或目录。以递归方式扫描目录。允许的文件扩展名包括类、zip 和 jar。
:目标目录<source><destination>

例:

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而不是.class文件(它不会分解jar)。


更新

人们问我:我如何得到蕨类植物花.jar?

如果您安装了任何 IntelliJ 产品,则您的计算机上很可能已经安装了 Fernflower 反编译器。IntelliJ IDEA附带Java Bytecode Decompiler插件(捆绑),这是Fernflower的现代扩展。

  1. 在(例如:C:\Program Files\JetBrains\IntelliJ IDEA 2018\plugins\java-decompiler\lib)中找到该文件。${IntelliJ_INSTALL_DIR}\plugins\java-decompiler\lib\java-decompiler.jar
  2. 将其复制到某个位置并重命名为 fernflower.jar(可选)。
  3. 此 JAR 不可执行,因此我们无法使用 运行它。但是,像这样的东西是有效的:java -jar

    java -cp fernflower.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler [<source>]+ <destination>
    

    org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler是包含运行反编译器的 main 方法的类。

    例:

    mkdir output_src
    java -cp fernflower.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -hdc=0 -dgs=1 -rsy=1 -lit=1 ./input.jar ./output_src
    

如果您没有安装 IntelliJ 产品,请立即下载(可在 jetbrains.com 上获得),或者从源代码(可在 Github 上找到)制作自己的反编译器可执行文件。


推荐