2011-10-24 59 views
32

Tengo un programa web donde quiero que el usuario pueda importar un archivo .war y puedo extraer ciertos archivos del archivo .war. He encontrado dos bibliotecas de clases: java.util.zip.* y java.util.jar.*. Por lo que entiendo, un archivo WAR es un archivo JAR especial que es un archivo ZIP especial. Entonces, ¿sería mejor usar java.util.jar? Si los archivos ZIP y JAR son prácticamente iguales, ¿por qué se necesitan dos bibliotecas diferentes?¿Cómo extraer los archivos .war en Java? ZIP vs JAR

+0

¿Qué vas a hacer con los archivos dentro del archivo de la guerra? –

Respuesta

17

Si nos fijamos en la API JarFile, verá que es una subclase de la clase ZipFile.

Las clases específicas de jar simplemente agregan funcionalidad específica de jar, como soporte directo para atributos de archivo de manifiesto, etc.

Es OOP "en acción"; dado que los archivos jar son archivos zip, las clases jar pueden usar la funcionalidad zip y proporcionar una utilidad adicional.

+3

Se agradecen los votos a la baja sobre las respuestas correctas y aceptadas. –

0

Como dijo, un jar es un archivo zip (no es un tipo especial, sino simplemente un zip antiguo), por lo que cualquier biblioteca podría funcionar. El razonamiento es que la persona promedio, al ver una extensión * .zip, tiende a descomprimirla. Dado que el servidor de la aplicación quiere que se descomprima, un simple cambio de nombre evita que las personas lo desabrochen simplemente por costumbre. Del mismo modo, el archivo * .war también debe permanecer sin comprimir.

java.util.jar básicamente solo agrega funcionalidad adicional a java.util.zip con muy pocos gastos adicionales. Deje que java.util.jar sea un ayudante en la publicación, etc ... y úsela.

0

La clase/paquete Jar es para mecanismos de archivo Jar específicos donde hay un manifiesto que es utilizado por los archivos Jar en algunos casos.

La clase/paquete de archivo Zip maneja cualquier archivo comprimido que incluya archivos Jar, que es un tipo de archivo comprimido.

Las clases Jar extienden así las clases de paquete Zip.

81

archivo WAR es simplemente un archivo JAR, para extraerlo, solo tema siguiente comando jar -

jar -xvf yourWARfileName.war 

Si no se encuentra el comando jar, que a veces ocurre en el símbolo del sistema de Windows, a continuación, especificar la ruta completa es decir, en mi caso es,

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

Utilicé este comando y extraje el archivo .war ... pero todo esto va a la carpeta bin ... puede u pegar el comando para elegir la ubicación de extracción –

+0

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

+1

En Java, se le preguntó al OP. –

8

Simplemente cambie el nombre del .war en .jar y descomprimirlo usando Winrar (o cualquier otro gestor de archivo).

1

Si usa Linux o Ubuntu, puede extraer datos directamente del archivo .war.

Un archivo war es simplemente un archivo jar, para extraerlo, solo tema siguiente comando utilizando el programa jar:

jar -xvf yourWARfileName.war 
Cuestiones relacionadas