2011-10-24 30 views
32

Ho un programma Web in cui desidero che l'utente sia in grado di importare un file .war e di estrarre determinati file dal file .war. Ho trovato due librerie di classi: java.util.zip.* e java.util.jar.*. Da quello che ho capito, un file WAR è uno speciale file JAR che è uno speciale file ZIP. Quindi sarebbe meglio usare java.util.jar? Se i file ZIP e JAR sono più o meno gli stessi perché c'è bisogno di due diverse librerie?Come estrarre i file .war in java? ZIP vs JAR

+0

Che cosa farete con i file all'interno del file di guerra? –

risposta

17

Se si guarda l'API JarFile, si vedrà che si tratta di una sottoclasse della classe ZipFile.

Le classi specifiche del jar aggiungono per lo più solo funzionalità specifiche per jar, come il supporto diretto per gli attributi di file manifest e così via.

È OOP "in azione"; poiché i file jar sono file zip, le classi jar possono utilizzare la funzionalità zip e fornire ulteriore utilità.

+3

Sono apprezzati i downvotes su risposte corrette e accettate. –

0

Come hai detto tu, un barattolo è un file zip (non un tipo speciale, ma solo un semplice vecchio zip), quindi entrambe le librerie potrebbero essere fatte funzionare. Il ragionamento è che la persona media, vedendo un'estensione * .zip, tende a decomprimerlo. Dal momento che il server dell'app lo vuole decompresso, un semplice rinominare impedisce alle persone di decomprimerlo semplicemente per abitudine. Allo stesso modo, il file * .war dovrebbe anche rimanere non compresso.

java.util.jar in pratica aggiunge semplicemente funzionalità aggiuntive a java.util.zip con un sovraccarico extra. Lascia che il java.util.jar sia un aiuto nel postare, ecc ... e usalo.

0

Classe Jar/pacchetto è per meccanismi di file Jar specifici in cui è presente un manifest che viene utilizzato dai file Jar in alcuni casi.

La classe/pacchetto di file Zip gestisce qualsiasi file compresso che include file Jar, che è un tipo di file compresso.

Le classi Jar estendono quindi le classi di pacchetti Zip.

81

file WAR è solo un file JAR, per estrarlo, proprio problema seguente comando jar -

jar -xvf yourWARfileName.war 

Se il comando jar non viene trovato, che a volte accade nel prompt dei comandi di Windows, quindi specificare il percorso completo vale a dire nel mio caso lo è,

c:\java\jdk-1.7.0\bin\jar -xvf my-file.war 
+0

Ho usato questo comando e file .war estrapolati .. ma tutto questo va nella cartella bin .. puoi incollare il comando per scegliere l'estrazione della posizione –

+0

http://stackoverflow.com/questions/15830952/extracting-jar-to-specified -directory –

+1

In Java, ha chiesto l'OP. –

8

basta rinominare il .war in .jar e decomprimerlo utilizzando Winrar (o qualsiasi altro gestore di archivi).

1

Se si utilizza Linux o Ubuntu di quanto sia possibile estrarre direttamente i dati dal file .war.

Un file war è solo un file jar, per estrarlo, proprio problema seguente comando utilizzando il programma jar:

jar -xvf yourWARfileName.war 
Problemi correlati