Extraindo arquivo .jar com linha de comando

116

Estou tentando extrair os arquivos de um arquivo .jar. Como faço isso usando a linha de comando?

Estou executando o Windows 7

Bobby C
fonte

Respostas:

148

Dos documentos :

Para extrair os arquivos de um arquivo jar, use x, como em:

C:\Java> jar xf myFile.jar

Para extrair apenas alguns arquivos de um arquivo jar, forneça seus nomes de arquivo:

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

A pasta onde jarestá provavelmente não é C:\Javapara você, na minha partição do Windows é:

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

A menos que a localização de jaresteja em sua variável de ambiente de caminho, você terá que especificar o caminho completo / executar o programa de dentro da pasta.

EDIT: Aqui está outro artigo, especificamente focado na extração de JARs: http://docs.oracle.com/javase/tutorial/deployment/jar/unpack.html

AusCBloke
fonte
Ok, quando eu executo o comando jar xf ..., recebo o erro: 'jar' não é reconhecido como um comando interno ou externo, programa operável ou arquivo em lote. Como faço para corrigir isso?
Bobby C
1
@BobbyC: Especifique o caminho completo jar.exeou execute-o de dentro da pasta.
AusCBloke de
Obrigado, está tudo bem agora!
Bobby C
2
java.io.IOException: META-INF: não foi possível criar o diretório em sun.tools.jar.Main.extractFile (Main.java:928) em sun.tools.jar.Main.extract (Main.java:852) ao sol .tools.jar.Main.run (Main.java:242) em sun.tools.jar.Main.main (Main.java:1149) como remover esse erro?
AnilPatel
1
@AnilPatel Corrigi isso executando o prompt de comando como administrador (clique com o botão direito em "executar como administrador")
jessieloo
34

Observe que um arquivo jar é um arquivo Zip e qualquer ferramenta Zip (como 7-Zip) pode olhar dentro do jar.

Hot Licks
fonte
6
Por favor, olhe aqui, é disso que todos vocês precisam.
Ali
28

No Ubuntu:

unzip file.jar -d dir_name_where_extracting

Burtsevyg
fonte
1
Útil para sistemas que não possuem um jarcomando! Funciona sem problemas no CentOS 5.7
djthoms
8

Você pode usar o seguinte comando: jar xf rt.jar

Onde Xsignifica extração e fseriam quaisquer opções que indiquem que o arquivo JAR do qual os arquivos devem ser extraídos é especificado na linha de comando, em vez de por meio de stdin.

Nikhil Arora
fonte
2

Java tem uma classe específica para arquivos zip e uma ainda mais específica para arquivos Jar.

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

usando aqueles que você poderia, em um comando do console, usando um scanner definido como system.in

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

em seguida, obtenha todos os componentes e grave-os como um arquivo.

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

Você também pode usar java.util.zip.ZipInputStream em vez disso, visto que um arquivo JAR está no mesmo formato de um arquivo ZIP, ZipInputStream será capaz de lidar com o arquivo Jar; na verdade, JarInputStream estende ZipInputStream.

uma alternativa também é, em vez de getNextJarEntry, usar getNextEntry

D3_JMultiply
fonte
2

jar xf myFile.jar
mude myFile para o nome do seu arquivo,
isso salvará o conteúdo da pasta atual do arquivo .jar
que deve servir :)

abe312
fonte
0

Dado um arquivo chamado Me.Jar:

  1. Vá para cmd
  2. Pressione Enter
  3. Use o jarcomando Java - estou usando jdk1.8.0_31, então eu digitaria

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

Isso deve extrair o arquivo para o compartimento da pasta. Procure o arquivo .class no meu caso, meu Me.jar contém um Valentine.class

Digite java Valentinee pressione Enter e seu arquivo de mensagem será aberto.

user4566153
fonte
-3

Para extrair o jar na pasta especificada, use este comando via prompt de comando

C:\Java> jar xf myFile.jar -C "C:\tempfolder"
VijayaKumar Thangavel
fonte
7
Isso não funciona. -Csó pode ser usado ao criar arquivos jar.
unwichtich
@unwichtich Nesse caso, existe uma maneira de especificar a pasta de destino?
Linha
2
Em sistemas Linux que você pode usar unzip file.jar -d dir_name_where_extracting, no Windows você tem que copiar / mover seu JAR para a pasta de destino e extraí-lo lá ...
unwichtich