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?
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.
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
Il suffit de renommer le .war
en .jar
et de le décompresser à l'aide de Winrar
(ou de tout autre gestionnaire d'archives).
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
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.
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.
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.