java - 通过命令行在类路径(包括 JARS)中搜索或列出 Java 类

标签 java linux

我真的很喜欢 javap 命令行程序来反编译和检查类,但是大多数时候我记不起类的完全限定包名:

javap java.nio.file.Files

如果我不知道包名称,那么我会求助于使用 Google。是否有内置的 java 程序或灵巧的 Linux 命令可以搜索并列出给定类名的所有匹配包?

最佳答案

搜索所有 jar :

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"

关于java - 通过命令行在类路径(包括 JARS)中搜索或列出 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21212060/

相关文章:

java - 检查控制台-计算机或程序错误?

java - 带符号的 16 位 PCM 转换不工作。为什么?

java - 在 Linux 中执行一个 jar 文件

linux - 在 linux 上设置硬件时钟不起作用

Linux删除一行中一个字符后的空格

java - 带进度条的 AsyncTask

java - 无效的堆大小 : where it is taken from?

java - 基于自定义属性将用户定义的数据类型添加到 Java Set?

c++ - 打开要在 C++ 中读取的文件,文件名字符串问题

linux - 使用 slurm 作业 ID