如何在Intellij中的反编译.class文件中搜索字符串

LeR*_*ton 12 java intellij-idea

是否可以使用Intellij中的Find in Path(Ctrl+ Shift+ F)在反编译的.class文件中搜索特定字符串?

我想在库代码中搜索我没有源代码.

尽管字符串在编辑器中存在(并且可见),但查找不会弹出任何结果.

Cra*_*der 19

如果不预先手动反编译所有类并将反编译的源附加到要搜索的库,则无法实现.

IntelliJ IDEA在路径中查找仅适用于源文件和资源文件.它不会搜索二进制.class文件.导航到.class文件时看到的是该类的反编译版本.反编译是动态执行的,IDE不会自动反编译和索引所有.class文件,因此没有可用的索引,也无法执行快速搜索.这种功能虽然在技术上可行,但需要对所有依赖项进行反编译和索引,这可能会占用大量时间和系统资源,尤其是在具有大量依赖项的项目中.

通常,您可以使用所依赖的库.对于Gradle/Maven项目,IntelliJ IDEA可以自动下载和配置这些源,因此在路径中查找将在库内部使用大多数用户/项目的附加源.

如果库没有源,您可以使用命令行批量反编译器对整个库执行脱机反编译,并将包含反编译源的目录附加到库中.

引自IntelliJ IDEA论坛中的这个答案.

  • 太差了但是很清晰,谢谢!我将按照您的链接文章中的建议尝试[Fernflower的命令行批处理反编译器](https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/engine)。 (3认同)