如何使用fernflower使用正确的行号进行反编译?

时间:2015-09-18 07:58:12

标签: java intellij-idea decompiling

我正在使用Intellij Idea 14处理大型java项目,其中编译了大量代码并且没有源代码。

据我所知Idea无法在已编译的代码中进行搜索(如eclipse那样),但它可以使用内置fernflower反编译单个文件,这也是提供了通过编译代码进行调试的可能性。

有没有办法以与Idea相同的方式一次反编译所有已编译的代码并将其附加到项目中,以便可以搜索“Project and Libs”而无需在反编译源中丢失调试功能?

我尝试使用Bytecodeviewer使用不同的fernflower选项,但结果是在附加反编译源后调试被破坏(显示错误的行)。

2 个答案:

答案 0 :(得分:6)

我发现在OSX上你可以在以下文件中更改此设置:

  

〜/库/首/ IntelliJIdea2016.1 /选项/ options.xml

添加以下属性:

    <property name="decompiler.use.line.mapping" value="true" />
    <property name="decompiler.dump.original.lines" value="true" />

答案 1 :(得分:0)

好的,因为没有关于此的消息,我创建了一个小插件,使用内置*-sources.jar Intellij将带有编译代码的jar文件反编译为新的fernflower文件反编译并将源代码附加到项目中。任何有兴趣的人都可以查看jetbrains插件库中的decompile and attach插件

更新 使用fernflower回答关于反编译代码中的行号的问题。我在decompiler.use.line.table的{​​{1}} Intellij中找到了保留行号的“fernflower”标记。