如何在大量jar文件中找到特定的类名?

(查找实际的类名,而不是引用它的类。)


当前回答

不知道为什么这里的脚本从来都不适合我。如此:

#!/bin/bash
for i in *.jar; do jar -tf "$i" | grep $1 | xargs -I{} echo -e "$i : {}" ; done

其他回答

我找到了这个新方法

bash $ ls -1  | xargs -i -t jar -tvf '{}'| grep Abstract
jar -tvf activation-1.1.jar
jar -tvf antisamy-1.4.3.jar
  2263 Thu Jan 13 21:38:10 IST 2011 org/owasp/validator/html/scan/AbstractAntiSamyScanner.class
...

如果你想,你可以给ls -1 *.jar,或者用查找命令HTH Someone输入xargs。

我一直在Windows上使用它,效果非常好。

findstr /s /m /c:"package/classname" *.jar, where

findstr.exe是Windows和参数的标准配置:

/s =递归 /m =如果有匹配,只打印文件名 /c =字面字符串(在这种情况下,你的包名+类名 以“/”分隔)

希望这能帮助到一些人。

再加上一个工具……这是一个非常简单和有用的窗口工具。你点击一个简单的exe文件,给它一个目录来搜索,一个类名,它会找到包含该类的jar文件。是的,它是递归的。

http://sourceforge.net/projects/jarfinder/

不久前,我专门为此写了一个程序:https://github.com/javalite/jar-explorer

不知道为什么这里的脚本从来都不适合我。如此:

#!/bin/bash
for i in *.jar; do jar -tf "$i" | grep $1 | xargs -I{} echo -e "$i : {}" ; done