找到给定类名的 jar 文件?

2022-08-31 15:19:40

对于Java开发人员来说,这一定是一个非常基本的问题,但是在给定类名的情况下找到合适的jar文件的最佳方法是什么?

例如,给定“com.ibm.websphere.security.auth.WSSubject”,你如何找到相应的jar文件?(“谷歌”不是我正在寻找的答案!

java文档没有给出jar文件的任何提示,显然jar文件本身的名称也没有提供任何线索。

在Java世界中,必须有一个“搜索本地jars”,或者某种“自动解析依赖关系”的技巧。理想情况下,我正在寻找“官方”方法来做到这一点。我碰巧在没有天鹅座的窗户机器上。


答案 1

将其另存为 findclass.sh(或其他任何内容),将其放在您的路径上并使其可执行:

#!/bin/sh
find "$1" -name "*.jar" -exec sh -c 'jar -tf {}|grep -H --label {} '$2'' \;

第一个参数是要递归搜索的目录,第二个参数是要搜索的正则表达式(通常只是一个简单的类名)。

$ findclass.sh . WSSubject

该脚本依赖于 jar 命令(列出内容)的 -t 选项,并 grep 每个目录,使用找到它的 JAR 文件的路径标记任何匹配项。


答案 2

没有“官方”的Java方法来做到这一点AFAIK。

我通常寻找它的方式是使用findjar来查看给定树中的所有jar文件。

> find . -name \*.jar -print -exec jar tf {} oracle/sql/BLOB.class \;
./v2.6.1/lib/csw_library.jar
./v2.6.1/lib/oracle_drivers_12_01.jar
oracle/sql/BLOB.class

如果你在Windows上并且不想安装Cygwin,那么我想你必须编写一个批处理脚本来找到jar文件。


推荐