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?
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.
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
Benennen Sie den .war
einfach in .jar
um und entpacken Sie ihn mit Winrar
(oder einem anderen Archivmanager).
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
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.
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.
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