作者:warcraft04 | 来源:互联网 | 2023-05-22 22:47
IDEA有一个很棒的内置功能 - 反编译器.它工作得很好.我可以复制源代码,但我找不到将所有反编译的java类提取到java文件的选项.
这个项目有很多java类和包,所以我将长时间手动复制它.
有谁知道如何提取到java源文件.谢谢
1> yan..: 截至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
(您将获得错误的使用 命令,但它确实有效).
将此答案与接受的答案中的最高评论合并,启动使用IDEA默认使用的相同参数的命令是`java -cp"/ Applications/IntelliJ IDEA.app/Contents/plugins/java-decompiler/lib/ java-decompiler.jar"org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -hdc = 0 -dgs = 1 -rsy = 1 -rbr = 1 -lit = 1 -nls = 1 -mpm = 60/absolute/path/to/src1/absolute/path/to/src2/absolute/path/to/dst`
这个更简短的命令对我有用(基于这些答案和使用说明):java -cp
/java-decompiler/lib/java-decompiler.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler- dgs = true <目标> 2> 小智..: 要从jar命令行使用IntelliJ Java反编译器,请按照此处提供的说明操作:https:
//github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/engine
IDEA的默认参数是`-hdc = 0 -dgs = 1 -rsy = 1 -rbr = 1 -lit = 1 -nls = 1 -mpm = 60`您可以在以下链接中看到它们[github](https:// github.com/JetBrains/intellij-community/blob/master/plugins/java-decompiler/plugin/src/org/jetbrains/java/decompiler/IdeaDecompiler.kt) @AlexSpurling查看`/ Applications/IntelliJ IDEA.app/Contents/plugins/java-decompiler/lib/java-decompiler.jar`.它被重命名. 有谁知道在IntelliJ IDEA安装中哪里可以找到fernflower.jar?我在我的mac上搜索了`/ Applications/IntelliJ IDEA CE.app/Contents`但找不到它. 3> naXa..: 按照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).
UPDATE
人们问我:我怎么得到fernflower.jar?
如果您安装了任何IntelliJ产品,很可能您已经在计算机上安装了Fernflower反编译器.IntelliJ IDEA附带Java Bytecode Decompiler插件(捆绑),这是Fernflower的现代扩展.
在${IntelliJ_INSTALL_DIR}\plugins\java-decompiler\lib\java-decompiler.jar
(例如:C:\ Program Files\JetBrains\IntelliJ IDEA 2018\plugins\java-decompiler\lib)中找到该文件.
将其复制到某处并重命名为fernflower.jar(可选).
此JAR不可执行,因此我们无法使用它java -jar
.但是这样的工作:
java -cp fernflower.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler []+
org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler
是包含运行反编译器的主要方法的类.
例:
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上提供)制作您自己的反编译器可执行文件.
我如何获得fernflower.jar?