Ik heb een webprogramma waarbij ik wil dat de gebruiker een .war
-bestand kan importeren en ik kan bepaalde bestanden uit het .war
-bestand extraheren. Ik heb twee klassenbibliotheken gevonden: java.util.zip.*
en java.util.jar.*
. Van wat ik begrijp, is een WAR-bestand een speciaal JAR-bestand dat een speciaal ZIP-bestand is. Dus zou het beter zijn om java.util.jar
te gebruiken? Als ZIP- en JAR-bestanden vrijwel hetzelfde zijn, waarom zijn er dan twee verschillende bibliotheken nodig?
Antwoord 1, autoriteit 100%
Als je kijkt naar de JarFileAPI ziet u dat het een subklasse is van de ZipFileklasse.
De jar-specifieke klassen voegen meestal alleen jar-specifieke functionaliteit toe, zoals directe ondersteuning voor manifest-bestandskenmerken, enzovoort.
Het is OOP “in actie”; aangezien jar-bestanden zip-bestanden zijn, kunnen de jar-klassen zip-functionaliteit gebruiken en extra hulpprogramma’s bieden.
Antwoord 2, autoriteit 93%
WAR-bestand is slechts een JAR-bestand, om het uit te pakken, geeft u het volgende jar-commando op –
jar -xvf yourWARfileName.war
Als het jar-commando niet wordt gevonden, wat soms gebeurt in de Windows-opdrachtprompt, geef dan het volledige pad op, d.w.z. in mijn geval wel,
c:\java\jdk-1.7.0\bin\jar -xvf my-file.war
Antwoord 3, autoriteit 48%
Hernoem gewoon de .war
in .jar
en pak het uit met Winrar
(of een andere archiefbeheerder).
Antwoord 4, autoriteit 13%
Als u Linux of Ubuntu gebruikt, kunt u direct gegevens uit het .war
-bestand extraheren.
Een war
-bestand is slechts een jar
-bestand, om het uit te pakken, geeft u het volgende commando op met het programma jar
:
jar -xvf yourWARfileName.war
Antwoord 5
Zoals je al zei, een jar iseen zip-bestand (geen speciaal type, maar gewoon een oude zip), dus beide bibliotheken zouden kunnen werken. De redenering is dat de gemiddelde persoon die een *.zip-extensie ziet, de neiging heeft om deze uit te pakken. Omdat de app-server het wil uitpakken, zorgt een eenvoudige hernoeming ervoor dat mensen het uit gewoonte niet uitpakken. Evenzo moet het *.war-bestand ook ongecomprimeerd blijven.
java.util.jar voegt in feite gewoon extra functionaliteit toe aan java.util.zip met heel weinig extra overhead. Laat de java.util.jar een hulp zijn bij het posten, enz… en gebruik het.
Antwoord 6
Jar-klasse/pakket is voor specifieke Jar-bestandsmechanismen waarbij er een manifest is dat in sommige gevallen door de Jar-bestanden wordt gebruikt.
De klasse/het pakket Zip-bestand verwerkt alle gecomprimeerde bestanden die Jar-bestanden bevatten, wat een type gecomprimeerd bestand is.
De Jar-klassen breiden dus de Zip-pakketklassen uit.
Antwoord 7
U kunt een ommekeer gebruiken en de applicatie gewoon op de Tomcat-server implementeren: kopieer/plak gewoon onder de map webapps.
Zodra Tomcat is gestart, wordt er een map met de app-naam gemaakt en hebt u direct toegang tot de inhoud
Antwoord 8
Voor mac-gebruikers: in terminalopdracht:
unzip yourWARfileName.war