it-swarm.com.de

Wie entpacke ich .war-Dateien in Java? Zip vs jar

Ich habe ein Webprogramm, in dem der Benutzer eine .war-Datei importieren kann, und ich kann bestimmte Dateien aus der .war-Datei extrahieren. Ich habe zwei Klassenbibliotheken gefunden: Java.util.Zip.* und Java.util.jar.*. Soweit ich weiß, ist eine WAR-Datei eine spezielle JAR-Datei, bei der es sich um eine spezielle Zip-Datei handelt. Wäre es also besser, Java.util.jar zu verwenden? Wenn Zip- und JAR-Dateien nahezu gleich sind, warum werden dann zwei verschiedene Bibliotheken benötigt?

38
user972276

Wenn Sie sich die JarFile API anschauen, werden Sie feststellen, dass es sich um eine Unterklasse der ZipFile -Klasse handelt.

Die jar-spezifischen Klassen fügen meistens nur jar-spezifische Funktionen hinzu, z. B. direkte Unterstützung für Attribute von Manifestdateien usw.

Es ist OOP "in Aktion"; Da JAR-Dateien Zip-Dateien sind, können die JAR-Klassen die Zip-Funktionalität verwenden und zusätzliche Hilfsprogramme bieten.

21
Dave Newton

WAR-Datei ist nur eine JAR-Datei. Zum Extrahieren geben Sie einfach den folgenden JAR-Befehl ein: 

jar -xvf yourWARfileName.war

Wenn der JAR-Befehl nicht gefunden wird (was manchmal in der Windows-Eingabeaufforderung angezeigt wird), geben Sie den vollständigen Pfad an.

 c:\Java\jdk-1.7.0\bin\jar -xvf my-file.war
99
iltaf khalid

Benennen Sie den .war einfach in .jar um und entpacken Sie ihn mit Winrar (oder einem anderen Archivmanager).

10
Mehdi

Wenn Sie Linux oder Ubuntu verwenden, können Sie direkt Daten aus der .war-Datei extrahieren.

Eine war-Datei ist nur eine jar-Datei. Zum Extrahieren geben Sie einfach den folgenden Befehl mit dem Programm jar aus:

jar -xvf yourWARfileName.war
1
Karan Rajput

Wie Sie gesagt haben, ist eine jar ist eine Zip-Datei (kein spezieller Typ, sondern nur eine einfache alte Zip-Datei), sodass eine der beiden Bibliotheken funktionieren könnte. Der Grund ist, dass die durchschnittliche Person, die eine * .Zip-Erweiterung sieht, dazu neigt, sie zu entpacken. Da der App-Server ihn entpackt haben möchte, verhindert eine einfache Umbenennung, dass die Benutzer ihn einfach entschlüsseln. Ebenso sollte die * .war-Datei unkomprimiert bleiben.

Java.util.jar fügt Java.util.Zip im Grunde nur eine zusätzliche Funktionalität hinzu, mit sehr wenig zusätzlichen Aufwand. Lassen Sie die Java.util.jar ein Helfer beim Posten usw. sein und verwenden Sie sie.

0
Affable Geek

Jar-Klasse/-Paket bezieht sich auf bestimmte Jar-Dateimechanismen, bei denen in einigen Fällen ein Manifest vorhanden ist, das von den Jar-Dateien verwendet wird.

Die ZIP-Dateiklasse/-Package verarbeitet alle komprimierten Dateien, die Jar-Dateien enthalten. Dies ist eine Art komprimierte Datei. 

Die Jar-Klassen erweitern somit die Zip-Paketklassen.

0
r0ast3d

Sie können eine Umkehrung ausführen und die Anwendung einfach auf dem Tomcat-Server bereitstellen: Kopieren und fügen Sie sie unter dem Ordner webapps ein. Nach dem Starten von Tomcat wird ein Ordner mit dem Anwendungsnamen erstellt, und Sie können direkt auf den Inhalt zugreifen

0
M. Dhaouadi