web-dev-qa-db-fra.com

Comment extraire les fichiers .war en java? Zip vs JAR

J'ai un programme Web où je veux que l'utilisateur puisse importer un fichier .war et que je puisse extraire certains fichiers du fichier .war. J'ai trouvé deux bibliothèques de classes: Java.util.Zip.* et Java.util.jar.*. D'après ce que j'ai compris, un fichier WAR est un fichier JAR spécial, qui est un fichier Zip spécial. Alors serait-il préférable d'utiliser Java.util.jar? Si les fichiers Zip et JAR sont à peu près les mêmes, pourquoi faut-il deux bibliothèques différentes?

38
user972276

Si vous regardez l'API JarFile , vous verrez qu'il s'agit d'une sous-classe de la classe ZipFile .

Les classes spécifiques au jar ajoutent généralement des fonctionnalités spécifiques au jar, telles que la prise en charge directe des attributs de fichier manifest, etc.

C'est OOP "en action"; les fichiers jar étant des fichiers Zip, les classes jar peuvent utiliser la fonctionnalité Zip et fournir un utilitaire supplémentaire.

21
Dave Newton

Le fichier WAR est juste un fichier JAR. Pour l'extraire, lancez la commande suivante jar - 

jar -xvf yourWARfileName.war

Si la commande jar n’est pas trouvée, ce qui se produit parfois dans l’invite de commande Windows, indiquez le chemin complet, c’est-à-dire dans mon cas,

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

Il suffit de renommer le .war en .jar et de le décompresser à l'aide de Winrar (ou de tout autre gestionnaire d'archives).

10
Mehdi

Si vous utilisez Linux ou Ubuntu, vous pouvez extraire directement les données du fichier .war.

Un fichier war est simplement un fichier jar. Pour l'extraire, exécutez la commande suivante à l'aide du programme jar:

jar -xvf yourWARfileName.war
1
Karan Rajput

Comme vous l'avez dit, un fichier jar est un fichier Zip (il ne s'agit pas d'un type spécial, mais simplement d'un fichier Zip ancien), afin que l'une ou l'autre des bibliothèques puisse fonctionner. Le raisonnement est que la personne moyenne, voyant une extension * .Zip, a tendance à la décompresser. Étant donné que le serveur d'applications souhaite le décompresser, un simple changement de nom empêche les utilisateurs de le décompresser simplement par habitude. De même, le fichier * .war doit également rester non compressé.

Java.util.jar ajoute simplement des fonctionnalités supplémentaires à Java.util.Zip avec très peu de charge supplémentaire. Laissez Java.util.jar être une aide pour la publication, etc ... et utilisez-le.

0
Affable Geek

La classe/package Jar est destinée à des mécanismes de fichier Jar spécifiques dans lesquels un fichier manifeste est utilisé par les fichiers Jar dans certains cas.

La classe/package de fichier Zip gère tous les fichiers compressés comprenant des fichiers Jar, qui sont un type de fichier compressé. 

Les classes Jar étendent donc les classes de package Zip.

0
r0ast3d

Vous pouvez utiliser un retournement et simplement déployer l'application sur le serveur Tomcat: il vous suffit de copier/coller sous le dossier webapps . Une fois que Tomcat est démarré, il crée un dossier avec le nom de l'application et vous pouvez accéder directement au contenu.

0
M. Dhaouadi