Estrazione del file .jar con riga di comando


116

Sto cercando di estrarre i file da un file .jar. Come posso farlo usando la riga di comando?

Utilizzo Windows 7

Risposte:


148

Dai documenti :

Per estrarre i file da un file jar, usa x, come in:

C:\Java> jar xf myFile.jar

Per estrarre solo determinati file da un file jar, fornire i loro nomi di file:

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

La cartella in cui jarè probabilmente non fa C:\Javaper te, sulla mia partizione di Windows è:

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

A meno che la posizione di non jarsia nella variabile di ambiente del percorso, dovrai specificare il percorso completo / eseguire il programma dall'interno della cartella.

EDIT: ecco un altro articolo, specificamente incentrato sull'estrazione di JAR: http://docs.oracle.com/javase/tutorial/deployment/jar/unpack.html


Ok, quando eseguo il comando jar xf ..., ottengo l'errore: "jar" non è riconosciuto come comando interno o esterno, programma eseguibile o file batch. Come lo risolvo?
Bobby C

1
@BobbyC: specifica il percorso completo jar.exeo eseguilo dall'interno della cartella.
AusCBloke

Grazie, adesso va tutto bene!
Bobby C

2
java.io.IOException: META-INF: impossibile creare la directory su sun.tools.jar.Main.extractFile (Main.java:928) su sun.tools.jar.Main.extract (Main.java:852) al sole .tools.jar.Main.run (Main.java:242) su sun.tools.jar.Main.main (Main.java:1149) come rimuovere questo errore?
AnilPatel

1
@AnilPatel Ho risolto questo problema eseguendo il prompt dei comandi come amministratore (fare clic con il tasto destro su "
Esegui

34

Nota che un file jar è un file zip e qualsiasi strumento Zip (come 7-Zip) può guardare all'interno del jar.


6
Per favore guarda qui, questo è ciò di cui hai bisogno.
Ali

28

In Ubuntu:

unzip file.jar -d dir_name_where_extracting


1
Utile per i sistemi che non hanno un jarcomando! Funziona senza problemi su CentOS 5.7
djthoms

8

Puoi usare il seguente comando: jar xf rt.jar

Dove Xsta per estrazione e fsarebbe qualsiasi opzione che indica che il file JAR da cui i file devono essere estratti è specificato sulla riga di comando, piuttosto che tramite stdin.


2

Java ha una classe specifica per i file zip e una ancora più specifica per i file Jar.

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

usando quelli che potresti, su un comando dalla console, usando uno scanner impostato su system.in

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

quindi prendi tutti i componenti e scrivili come file.

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

Puoi anche usare java.util.zip.ZipInputStream, poiché vedendo che un file JAR è nello stesso formato di un file ZIP, ZipInputStream sarà in grado di gestire il file Jar, infatti JarInputStream estende effettivamente ZipInputStream.

un'alternativa è anche invece di getNextJarEntry, per utilizzare getNextEntry


2

jar xf myFile.jar
cambia myFile con il nome del tuo file
questo salverà il contenuto nella cartella corrente del file .jar
che dovrebbe fare :)


0

Dato un file chiamato Me.Jar:

  1. Vai a cmd
  2. Premi Invio
  3. Usa il jarcomando Java : sto usando jdk1.8.0_31, quindi vorrei digitare

    C: \ Programmi (x86) \ Java \ jdk1.8.0_31 \ bin \ jar xf me.jar

Questo dovrebbe estrarre il file nel cestino della cartella. Cerca il file .class nel mio caso il mio Me.jar contiene un Valentine.class

Digita java Valentinee premi Invio e il file del messaggio verrà aperto.


-3

Per estrarre il jar nella cartella specificata utilizzare questo comando tramite il prompt dei comandi

C:\Java> jar xf myFile.jar -C "C:\tempfolder"

7
Questo non funziona. -Cpuò essere utilizzato solo durante la creazione di file jar.
unwichtich

@unwichtich In tal caso, c'è un modo per specificare la cartella di destinazione?
Linea

2
Su sistemi Linux che potresti usare unzip file.jar -d dir_name_where_extracting, su Windows devi copiare / spostare il tuo JAR nella cartella di destinazione e quindi estrarlo lì ...
unwichtich
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.