Extrayendo archivo .jar con línea de comando

115

Estoy tratando de extraer los archivos de un archivo .jar. ¿Cómo hago eso usando la línea de comando?

Estoy ejecutando Windows 7

Bobby C
fuente

Respuestas:

146

De los documentos :

Para extraer los archivos de un archivo jar, use x, como en:

C:\Java> jar xf myFile.jar

Para extraer solo ciertos archivos de un archivo jar, proporcione sus nombres de archivo:

C:\Java> jar xf myFile.jar foo bar

La carpeta donde jarestá probablemente no sea C:\Javapara usted, en mi partición de Windows es:

C:\Program Files (x86)\Java\jdk[some_version_here]\bin

A menos que la ubicación de jaresté en la variable de entorno de su ruta, tendrá que especificar la ruta completa / ejecutar el programa desde dentro de la carpeta.

EDITAR: Aquí hay otro artículo, específicamente centrado en la extracción de JAR: http://docs.oracle.com/javase/tutorial/deployment/jar/unpack.html

AusCBloke
fuente
Ok, cuando hago ese comando jar xf ..., aparece el error: 'jar' no se reconoce como un comando interno o externo, programa operable o archivo por lotes. ¿Cómo puedo solucionar esto?
Bobby C
1
@BobbyC: especifique la ruta completa jar.exeo ejecútelo desde dentro de la carpeta.
AusCBloke
Gracias, ¡todo está bien ahora!
Bobby C
2
java.io.IOException: META-INF: no se pudo crear el directorio en sun.tools.jar.Main.extractFile (Main.java:928) en sun.tools.jar.Main.extract (Main.java:852) en sun .tools.jar.Main.run (Main.java:242) en sun.tools.jar.Main.main (Main.java:1149) ¿cómo eliminar este error?
AnilPatel
1
@AnilPatel Arreglé esto ejecutando el símbolo del sistema como administrador (haga clic con el botón derecho en "ejecutar como administrador")
jessieloo
34

Tenga en cuenta que un archivo jar es un archivo Zip y cualquier herramienta Zip (como 7-Zip) puede mirar dentro del jar.

Lamidas calientes
fuente
6
Por favor mire aquí, esto es lo que todos necesitan.
Ali
28

En Ubuntu:

unzip file.jar -d dir_name_where_extracting

burtsevyg
fuente
1
¡Útil para sistemas que no tienen un jarcomando! Funciona sin problemas en CentOS 5.7
djthoms
8

Puede utilizar el siguiente comando: jar xf rt.jar

Donde Xsignifica extracción y fsería cualquier opción que indique que el archivo JAR del que se extraerán los archivos se especifica en la línea de comando, en lugar de a través de stdin.

Nikhil Arora
fuente
2

Java tiene una clase específicamente para archivos zip y una aún más específica para archivos Jar.

java.util.jar.JarOutputStream
java.util.jar.JarInputStream

usando los que podría, en un comando de la consola, usando un escáner configurado en system.in

Scanner console = new Scanner(System.in);
String input = console.nextLine();

luego obtenga todos los componentes y escríbalos como un archivo.

JarEntry JE = null;
while((JE = getNextJarEntry()) != null)
{
    //do stuff with JE
}

También puede usar java.util.zip.ZipInputStream en su lugar, ya que al ver que un archivo JAR tiene el mismo formato que un archivo ZIP, ZipInputStream podrá manejar el archivo Jar, de hecho JarInputStream en realidad extiende ZipInputStream.

una alternativa también es en lugar de getNextJarEntry, para usar getNextEntry

D3_JMultiply
fuente
2

jar xf myFile.jar
cambie myFile al nombre de su archivo,
esto guardará el contenido en la carpeta actual del archivo .jar
que debería hacer :)

abe312
fuente
0

Dado un archivo llamado Me.Jar:

  1. Ir a cmd
  2. Pulsa Enter
  3. Use el jarcomando de Java : estoy usando jdk1.8.0_31, así que escribiría

    C: \ Archivos de programa (x86) \ Java \ jdk1.8.0_31 \ bin \ jar xf me.jar

Eso debería extraer el archivo a la carpeta bin. Busque el archivo .class en mi caso, mi Me.jar contiene un Valentine.class

Escriba java Valentiney presione Entrar y se abrirá su archivo de mensaje.

usuario4566153
fuente
-3

Para extraer el frasco en la carpeta especificada, use este comando a través del símbolo del sistema

C:\Java> jar xf myFile.jar -C "C:\tempfolder"
VijayaKumar Thangavel
fuente
7
Esto no funciona. -Csolo se puede usar al crear archivos jar.
unwichtich
@unwichtich En ese caso, ¿hay alguna forma de especificar la carpeta de destino?
Línea
2
En los sistemas Linux se puede utilizar unzip file.jar -d dir_name_where_extracting, en Windows tienes que copiar / mover el JAR a la carpeta de destino y luego extraerlo allí ...
unwichtich