我非常喜欢javap命令行程序来反编译和检查类,但是大多数时候我都无法重新收集类的完全限定的包名:
javap java.nio.file.Files
如果我不知道包裹名称,那么我就会使用谷歌。是否有内置的java程序或光滑的Linux命令可以搜索并列出给定类名的所有匹配包?
答案 0 :(得分:5)
搜索所有的罐子:
find <path> -name "*.jar" -exec jar -tf {} \; | grep "/<classname>\.class\$"
示例:
find ~/.ivy2/ -name "*.jar" -exec jar -tf {} \; | grep "/Filter\.class\$"
输出:
javax/servlet/Filter.class
javax/servlet/Filter.class
javax/servlet/Filter.class
org/scalatest/Filter.class
org/scalatest/Filter.class
org/fusesource/scalate/filter/Filter.class
org/fusesource/scalate/filter/Filter.class
scala/tools/scalap/scalax/rules/Filter.class
org/apache/ivy/util/filter/Filter.class
com/foursquare/fongo/impl/Filter.class
com/foursquare/fongo/impl/Filter.class
com/foursquare/fongo/impl/Filter.class
shapeless/Filter.class
我个人并不喜欢这个解决方案。
要搜索所有类文件,只需使用find
:
find <path> -name "*.class"