我正在使用Intellij Idea 14
处理大型java项目,其中编译了大量代码并且没有源代码。
据我所知Idea
无法在已编译的代码中进行搜索(如eclipse
那样),但它可以使用内置fernflower
反编译单个文件,这也是提供了通过编译代码进行调试的可能性。
有没有办法以与Idea相同的方式一次反编译所有已编译的代码并将其附加到项目中,以便可以搜索“Project and Libs”而无需在反编译源中丢失调试功能?
我尝试使用Bytecodeviewer
使用不同的fernflower
选项,但结果是在附加反编译源后调试被破坏(显示错误的行)。
答案 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
”标记。