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

2022-09-01 21:16:21

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

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

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


答案 1

如果不事先手动反编译所有类并将反编译的源代码附加到要在其中搜索的库中,这是不可能实现的。

IntelliJ IDEA Find in Path 仅适用于源文件和资源文件。它不会在二进制.class文件中搜索。导航到.class文件时看到的是类的反编译版本。反编译是动态执行的,IDE 不会自动反编译和索引所有.class文件,因此没有可用的索引,也没有办法执行快速搜索。这样的功能虽然在技术上是可行的,但需要反编译和索引所有依赖项,这可能需要花费大量时间和系统资源,特别是在具有大量依赖项的项目中。

通常,您所依赖的库有可用的资源。对于Gradle/Maven项目,IntelliJ IDEA可以自动下载和配置此类源代码,因此find in path将在库内工作,并为大多数用户/项目提供附加的源代码。

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

引自IntelliJ IDEA论坛上的这个答案


答案 2

在 Path 中查找,并应在所有位置(甚至在库中)搜索使用情况(Ctrl + Shift + F) in IntellijScope > All Places

注意:尽管这不会在反编译的类中搜索。这将帮助您搜索所有文件。


推荐