如何在大量jar文件中找到特定的类名?
(查找实际的类名,而不是引用它的类。)
如何在大量jar文件中找到特定的类名?
(查找实际的类名,而不是引用它的类。)
当前回答
在eclipse中,你可以使用旧的但仍然可用的插件jarsearch
其他回答
我找到了这个新方法
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。
下面的脚本将帮助您
for file in *.jar
do
# do something on "$file"
echo "$file"
/usr/local/jdk/bin/jar -tvf "$file" | grep '$CLASSNAME'
done
我知道这是个老问题,但是…… 我也有同样的问题,所以如果有人正在寻找一个非常简单的解决方案的windows -有一个软件名为Locate32 只要把jar作为文件扩展名 并包含类名 它会在几秒钟内找到文件。
文件名:searchForFiles.py
import os, zipfile, glob, sys
def main():
searchFile = sys.argv[1] #class file to search for, sent from batch file below (optional, see second block of code below)
listOfFilesInJar = []
for file in glob.glob("*.jar"):
archive = zipfile.ZipFile(file, 'r')
for x in archive.namelist():
if str(searchFile) in str(x):
listOfFilesInJar.append(file)
for something in listOfFilesInJar:
print("location of "+str(searchFile)+": ",something)
if __name__ == "__main__":
sys.exit(main())
你可以通过创建一个带有以下文本的.bat文件(用你正在搜索的文件替换“AddWorkflows.class”)来轻松运行:
(文件:CallSearchForFiles.bat)
@echo off
python -B -c "import searchForFiles;x=searchForFiles.main();" AddWorkflows.class
pause
您可以双击CallSearchForFiles.bat来运行它,或者从命令行“CallSearchForFiles.bat SearchFile.class”调用它。
单击以查看示例输出
ClassFinder是一个专门用来解决这个问题的程序。它允许您在目录和jar文件中递归搜索,以找到与模式匹配的类的所有实例。它是用Java编写的,而不是python。它有一个很好的图形用户界面,这使得它易于使用。它跑得很快。这个版本是在一个可运行的jar中预编译的,所以您不必从源代码构建它。
在这里下载:ClassFinder 1.0