当前位置: 首页 > 面试题库 >

列出多个jar文件的内容

凌俊名
2023-03-14
问题内容

我正在寻找一堆罐子里的.class文件。

jar tf abc.jar

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

find -name "*.jar" | xargs jar tf

什么都不打印。我能想到的唯一解决方案是全部解压缩,然后搜索。有没有更好的办法?我在LUnix上。

编辑 :扫描多个jar时,将jar文件名与类一起打印很有用。此方法效果很好:

find . | grep jar$ | while read fname; do jar tf $fname | grep SchemaBuilder && echo $fname; done

产生的样本输出:

  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

问题答案:

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

find -name "*.jar" | xargs -n 1 jar tf

否则xargs,命令行类似于jar tf file1.jar file2.jar...,其含义与预期的不同。

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

find -name "*.jar" | xargs echo jar tf

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



 类似资料:
  • 我尝试使用以下命令编译2个jar文件和4个java源文件: javac-classpath junit-4.12.jar jar2.jar 1.java 2.java 3.java 4.java 但是,我得到以下错误:

  • 问题内容: 我有这段代码,它从目录中读取所有文件。 效果很好。它使用目录“ text_directory”中所有以“ .txt”结尾的文件填充数组。 如何在 JAR文件中以类似方式读取目录的内容? 因此,我真正想要做的是列出我的JAR文件中的所有图像,这样我就可以加载它们: (之所以有效,是因为“ CompanyLogo”是“硬编码的”,但是JAR文件中的图像数量可以是10到200个可变长度。)

  • 问题内容: 这是我当前的代码: 这很好。但是,我想列出其他图像类型,例如.png,gif等。 请给我一些帮助,以修改上面的代码以使其正常工作。我尝试了以下方法,但均未成功: 和其他变化… 问题答案:

  • 我试图构建我的项目的JRE捆绑exe文件,这是一个游戏,在本教程的帮助下使用,它创建了文件,但每当我运行这个文件时,它会给出两条错误消息: 出现JNI错误,请检查您的安装。 Java异常发生(JVM启动器)。 附言:我的项目在文件夹中包含额外的JAR文件()。

  • 问题内容: 我正在用JAVA制作游戏,我想在jar中的某个目录中列出文件列表,这样我就可以确保列出要在游戏中使用的这些类的列表。 例如说我的罐子里有一个目录 我想 使用jar中另一个类的Java代码 获取该目录中所有.class文件的列表。 这样做的最佳代码是什么? 问题答案: 旧的Java1.4代码,但这会让您有一个主意:

  • 问题内容: 我需要使用当前Maven构建中的“主” applicationContext-a.xml创建一个ApplicationContext。另一个连接来自另一个Maven构建的类,并在Maven依赖关系包含的jar中预设。 这里的想法: 这应该从Classpath加载applicationContext-a.xml,因为它位于同一Project中。 这可行。 然后应该从依赖项jar中加载ap