我需要从提供特定逻辑 Java 包(例如com.example.functionality
)的 Java 项目中找到 jar,但是它们有数百个,而且它们的名称并不是特别有用。
如何找出在 dirs/files/jars 和 packages/classes 之间创建的映射?
obj.getClass().getProtectionDomain().getCodeSource()
参见:javadoc
您可以在代码中执行此操作:
类 myClass = Class.forName("com.example.functionality"); // 例如。/com/example/functionality.class String classfilePath = '/' + myClass.getName().replace(".", "/") + ".class"; URL 位置 = myClass.getResource(classfilePath);
该 URL 将是 JAR 文件(如果不在 jar 中,则为类文件夹)。虽然有点 hacky - 可能不适用于所有类加载器。
对于一次性搜索,http://www.jarfinder.com/很方便。它具有令人印象深刻的索引,似乎了解 Maven Central 以及 Web 上的许多其他下载站点中的所有内容,并允许您按类名搜索以查找哪些 JAR 包含该类。