首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >列出多个jar文件的内容

列出多个jar文件的内容
EN

Stack Overflow用户
提问于 2011-10-14 23:48:51
回答 9查看 20.2K关注 0票数 22

我在一堆jars中搜索一个.class文件。

代码语言:javascript
复制
jar tf abc.jar 

适用于一个文件。我试过了

代码语言:javascript
复制
find -name "*.jar" | xargs jar tf

不打印任何内容。我能想到的唯一解决方案就是全部解压,然后搜索。有没有更好的方法?我上LUnix了。

编辑:在扫描许多jar时,打印jar文件名和类是很有用的。这种方法效果很好:

代码语言:javascript
复制
find . | grep jar$ | while read fname; do jar tf $fname | grep SchemaBuilder && echo $fname; done

生成的示例输出:

代码语言:javascript
复制
  1572 Wed Jul 25 10:20:18 EDT 2007 org/apache/ws/commons/schema/SchemaBuilder$1.class
  1718 Wed Jul 25 10:20:18 EDT 2007 org/apache/ws/commons/schema/SchemaBuilder$2.class
 42607 Wed Jul 25 10:20:18 EDT 2007 org/apache/ws/commons/schema/SchemaBuilder.class
./XmlSchema-1.3.2.jar
  1572 Wed Jul 25 10:20:18 EDT 2007 org/apache/ws/commons/schema/SchemaBuilder$1.class
  1718 Wed Jul 25 10:20:18 EDT 2007 org/apache/ws/commons/schema/SchemaBuilder$2.class
 42607 Wed Jul 25 10:20:18 EDT 2007 org/apache/ws/commons/schema/SchemaBuilder.class
./XmlSchema.jar
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2011-10-14 23:52:10

您需要将-n 1传递给xargs,以强制它为从find获取的每个文件名运行单独的jar命令

代码语言:javascript
复制
find -name "*.jar" | xargs -n 1 jar tf

除此之外,xargs的命令行看起来像jar tf file1.jar file2.jar...,它的含义与预期的不同。

一种有用的调试技术是将echo放在xargs要运行的命令之前

代码语言:javascript
复制
find -name "*.jar" | xargs echo jar tf

这将打印出完整的jar命令,而不是执行它,这样您就可以看到它出了什么问题。

票数 38
EN

Stack Overflow用户

发布于 2015-09-28 12:11:30

我遇到过类似的情况,我需要在目录中存在的jar文件列表中搜索一个类。我还想知道这个类属于哪个jar文件。我使用了下面的代码片段(shell脚本),发现很有帮助。下面的脚本将列出包含要搜索的类的jar文件。

代码语言:javascript
复制
#!/bin/sh
LOOK_FOR="codehaus/xfire/spring"
for i in `find . -name "*jar"`
do
  echo "Looking in $i ..."
  jar tvf $i | grep $LOOK_FOR > /dev/null
  if [ $? == 0 ]
  then
    echo "==> Found \"$LOOK_FOR\" in $i"
  fi
done

Shell脚本摘自:http://alvinalexander.com/blog/post/java/shell-script-search-search-multiple-jar-files-class-pattern

票数 2
EN

Stack Overflow用户

发布于 2011-10-14 23:55:41

您还可以使用find的-exec选项

代码语言:javascript
复制
find . -name "*.jar" -exec jar tf {} \;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7770183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档