2010-07-13 3 views
6
den Inhalt einer JAR-Datei zur Liste

Lets sagen, dass ich eine WAR-Dateiwie in einem Krieg Datei

myWarFile.war

Diese Datei hat eine JAR-Datei im Inneren haben - WEB-INF/myJarFile. jar

Ich möchte sehen, was die Dateien in myJarFile.jar sind, ohne die Kriegsdatei zu extrahieren.

Gibt es eine Möglichkeit, es zu tun?

Antwort

6
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 

Ich habe gerade dies getan und es löschte nicht die Datei, die ich aus dem Krieg extrahiert. Bitte verifiziere das, aber ...;)

+0

gut, das zu einfach wäre: -) Lassen Sie mich meine Frage mit einem Beispiel umformulieren $ ls myWarFile.war $ jar -tvf myWarFile.war | grep myJarFile WEB-INF/myJarFile.jar Frage ist, wie sehe ich den Inhalt von myJarFile.jar "ohne zuerst den Inhalt von myWarFile.war" .. gibt es eine Verknüpfung? – sunny8107

+0

Die 't'-Option bedeutet nur den Inhalt anzeigen, es extrahiert nicht den Krieg. von der man-Seite: t Listet das Inhaltsverzeichnis aus JAR-Datei (wenn f angegeben ist) oder Standardeingabe (wenn F und JAR-Datei weggelassen werden). Wenn Eingabedateien angegeben sind, werden nur die angegebenen Dateien und Verzeichnisse aufgelistet. Andere - weise sind alle Dateien und Verzeichnisse aufgeführt. – hvgotcodes

+0

aah ich sehe. Mann, ich lese die Frage immer falsch. Sie haben eine Jar-Datei in einem Krieg und wollen das Glas sehen. In diesem Fall extrahieren Sie nur das Glas aus dem Krieg, dann listet den Inhalt auf, dann löschen Sie die extrahierte Datei ... bearbeitet meine Antwort oben mit allen Schritten ... – hvgotcodes

0

Ich denke dein bester Schuss ist raten, aber das ist nicht sehr zuverlässig.

Ein gezipptes Archiv (ein .war ist nichts anderes) enthält eine Tabelle mit Inhalten und gepackten Dateien. Es gibt keine Möglichkeit, auf die Inhalte der gepackten Dateien zuzugreifen, ohne sie zuerst zu extrahieren.

1

Wenn Sie den Krieg in 7-Zip öffnen, können Sie auch verschachtelte Gläser öffnen.

ich dieses Skript immer verwenden, wenn ich suchen mag oder grep alle Klassen und andere Dateien auf dem Classpath in einem Krieg (es tut, obwohl der Krieg-Datei extrahieren)

#!/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