Jef*_*ght 62 java dependencies jar
对于Java开发人员来说,这必须是一个非常基本的问题,但是在给定类名的情况下找到合适的jar文件的最佳方法是什么?
例如,给定" com.ibm.websphere.security.auth.WSSubject ",如何跟踪相应的jar文件?("谷歌"不是我正在寻找的答案!)
在Java文档不给jar文件的任何暗示,明显的jar的名称文件本身不提供线索.
在java世界中必须有一个"搜索本地jar"或某种"自动解析依赖"技巧.理想情况下,我正在寻找"官方"的方式来做到这一点.我碰巧在没有cygwin的Windows机器上.
Dan*_*yer 81
将其保存为findclass.sh(或其他),将其放在路径上并使其可执行:
#!/bin/sh
find "$1" -name "*.jar" -exec sh -c 'jar -tf {}|grep -H --label {} '$2'' \;
Run Code Online (Sandbox Code Playgroud)
第一个参数是递归搜索的目录,第二个参数是要搜索的正则表达式(通常只是一个简单的类名).
$ findclass.sh . WSSubject
Run Code Online (Sandbox Code Playgroud)
该脚本依赖于jar命令的-t选项(列出内容)并greps每个目录,并将所有匹配项标记为找到它的JAR文件的路径.
ipo*_*voy 14
我已经为此编写了一个程序:https: //github.com/javalite/jar-explorer 它还将反编译现有的字节代码以显示接口,方法,超类,将显示其他资源的内容 - 文本,图像,html等
Dav*_*sta 13
没有"官方"Java方法来做这个AFAIK.
我通常寻找它的方法是使用find和jar来查看给定树中的所有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
Run Code Online (Sandbox Code Playgroud)
如果你在Windows上并且不想安装Cygwin,那么我想你必须编写一个批处理脚本来找到jar文件.
您可以尝试以下服务:
或者
或者
PS:Jarhoo 与 Javacio.us 合作,为 100,000 名 Java 开发人员提供通过与 Google 搜索结果集成的链接免费访问 Jarhoo 的服务。Javacio.us 的订阅是免费的,并向任何拥有 Google 帐户的人开放。欲了解更多信息,请访问Javacio.us 上的 Jarhoo 优惠页面。
小智 5
如果您的系统上的grep(例如Solaris)没有Dan Dyer的示例中使用的-H和--label,则可以使用:
find . -name '*.jar' -type f | xargs -i bash -c "jar -tvf {}| tr / . | grep WSSubject && echo {}"
Run Code Online (Sandbox Code Playgroud)
要搜索当前目录下的所有jar并返回包含类abcD的jar,请执行以下操作:
find . -iname *.jar | while read JARF; do jar tvf $JARF | grep a/b/c/D.class && echo $JARF ; done
Run Code Online (Sandbox Code Playgroud)
它将报告类abcD的所有实例(或具有类似后缀的类),并仅打印包含它的jar.
典型输出:
$ find . -iname *.jar | while read JARF; do jar tvf $JARF | grep Log.class && echo $JARF ; done
479 Fri Oct 10 18:19:40 PDT 2003 org/apache/commons/logging/Log.class
3714 Fri Oct 10 18:19:40 PDT 2003 org/apache/commons/logging/impl/Log4JCategoryLog.class
1963 Fri Oct 10 18:19:40 PDT 2003 org/apache/commons/logging/impl/NoOpLog.class
9065 Fri Oct 10 18:19:40 PDT 2003 org/apache/commons/logging/impl/SimpleLog.class
./WebContent/WEB-INF/lib/commons-logging.jar
Run Code Online (Sandbox Code Playgroud)