【问题标题】:how to list the contents of a jar file inside a war file如何在war文件中列出jar文件的内容
【发布时间】:2010-07-13 14:42:00
【问题描述】:

假设我有一个 .war 文件

myWarFile.war

这个文件里面有一个jar文件——WEB-INF/myJarFile.jar

我想在不提取war文件的情况下查看myJarFile.jar中的文件。

有办法吗?

【问题讨论】:

    标签: jar


    【解决方案1】:
    jar xvf thewar.war /path/to/jar/inside/war #extract the file...    
    jar tvf /path/to/jar/indide/war.jar # read the extracted jar  
    rm /path/to/jar/inside/war # remove it 
    

    我只是这样做了,它并没有删除我从战争中提取的文件。请确认...;)

    【讨论】:

    • 那太简单了 :-) 让我用一个例子重新表述我的问题 $ ls myWarFile.war $ jar -tvf myWarFile.war | grep myJarFile WEB-INF/myJarFile.jar 问题是,我如何查看 myJarFile.jar 的内容“无需先提取 myWarFile.war 的内容”.. 有快捷方式吗?
    • 't' 选项意味着只显示内容,它实际上并不提取战争。来自手册页: t 列出来自 jarfile(如果指定 f)或标准输入(如果省略 f 和 jarfile)的目录。如果指定了 inputfiles,则仅列出那些指定的文件和目录。否则,将列出所有文件和目录。
    • 啊,我明白了。伙计,我总是把问题读错了。您在战争中有一个 jar 文件,并且想要查看该 jar。在这种情况下,只从战争中提取罐子,然后列出内容,然后删除提取的文件...用所有步骤编辑我上面的答案...
    • 是的..这行得通...我想无法避免提取 ;-) .. 无论如何谢谢
    • @sunny8107 如果它对您有用,请确保您接受它作为您的答案。
    【解决方案2】:

    如果你用 7-zip 打开战争,你也可以打开嵌套的罐子。

    当我想在战争中搜索或 grep 类路径上的所有类和其他文件时,我总是使用这个脚本(虽然它确实提取了战争文件)

    #!/bin/bash
    #
    # Unzips all the libs in a war
    set -o errexit
    set -o nounset
    mkdir -p contents
    cd contents
    unzip $1
    mkdir -p jars
    cd jars
    for jar in ../WEB-INF/lib/*.jar; do
      basejar=$(basename $jar)
      mkdir -p "$basejar"
      unzip -o "$jar" -d "$basejar"
    done
    

    【讨论】:

      【解决方案3】:

      压缩档案(.war 不是别的)包含目录和打包文件。如果不先提取它们,就无法访​​问任何打包文件的内容。

      【讨论】:

        猜你喜欢
        • 2020-02-04
        • 2014-05-24
        • 2011-12-07
        • 2014-06-28
        • 1970-01-01
        • 2011-10-17
        • 2010-11-28
        • 1970-01-01
        • 2011-06-30
        相关资源
        最近更新 更多