Extrahieren einer JAR-Datei mit der Befehlszeile

115

Ich versuche, die Dateien aus einer JAR-Datei zu extrahieren. Wie mache ich das über die Kommandozeile?

Ich verwende Windows 7

Bobby C.
quelle

Antworten:

146

Aus den Dokumenten :

Verwenden Sie xwie folgt, um die Dateien aus einer JAR-Datei zu extrahieren :

C:\Java> jar xf myFile.jar

Um nur bestimmte Dateien aus einer JAR-Datei zu extrahieren, geben Sie deren Dateinamen an:

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

Der Ordner, in dem jarsich wahrscheinlich nichts C:\Javafür Sie befindet, auf meiner Windows-Partition lautet :

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

Sofern sich der Speicherort von nicht jarin Ihrer Pfadumgebungsvariablen befindet, müssen Sie den vollständigen Pfad angeben / das Programm im Ordner ausführen.

BEARBEITEN: Hier ist ein weiterer Artikel, der sich speziell mit dem Extrahieren von JARs befasst: http://docs.oracle.com/javase/tutorial/deployment/jar/unpack.html

AusCBloke
quelle
Ok, wenn ich diesen Befehl jar xf ... ausführe, wird folgende Fehlermeldung angezeigt: 'jar' wird nicht als interner oder externer Befehl, bedienbares Programm oder Batchdatei erkannt. Wie behebe ich das?
Bobby C
1
@BobbyC: Geben Sie den vollständigen Pfad des jar.exeOrdners an oder führen Sie ihn aus.
AusCBloke
Danke, jetzt ist alles in Ordnung!
Bobby C
2
java.io.IOException: META-INF: Verzeichnis bei sun.tools.jar.Main.extractFile (Main.java:928) bei sun.tools.jar.Main.extract (Main.java:852) bei sun konnte nicht erstellt werden .tools.jar.Main.run (Main.java:242) at sun.tools.jar.Main.main (Main.java:1149) Wie kann dieser Fehler behoben werden?
AnilPatel
1
@ AnilPatel Ich habe dies behoben, indem ich die Eingabeaufforderung als Administrator ausgeführt habe (Rechtsklick auf "Als Administrator ausführen")
jessieloo
34

Beachten Sie, dass eine JAR-Datei eine Zip-Datei ist und jedes Zip-Tool (z. B. 7-Zip) in das JAR schauen kann.

Hot Licks
quelle
6
Bitte schauen Sie hier, das ist was Sie alle brauchen.
Ali
28

In Ubuntu:

unzip file.jar -d dir_name_where_extracting

burtsevyg
quelle
1
Nützlich für Systeme ohne jarBefehl! Funktioniert ohne Probleme unter CentOS 5.7
djthoms
8

Sie können den folgenden Befehl verwenden: jar xf rt.jar

Wobei Xsteht für Extraktion und die fOptionen, die angeben, dass die JAR-Datei, aus der Dateien extrahiert werden sollen, in der Befehlszeile und nicht über stdin angegeben wird.

Nikhil Arora
quelle
2

Java hat eine Klasse speziell für Zip-Dateien und eine noch spezieller für Jar-Dateien.

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

Verwenden Sie diese auf Befehl der Konsole mit einem auf system.in eingestellten Scanner

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

Holen Sie sich dann alle Komponenten und schreiben Sie sie als Datei.

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

Sie können stattdessen auch java.util.zip.ZipInputStream verwenden. Da eine JAR-Datei dasselbe Format wie eine ZIP-Datei hat, kann ZipInputStream die Jar-Datei verarbeiten. JarInputStream erweitert tatsächlich ZipInputStream.

Eine Alternative ist auch, anstelle von getNextJarEntry getNextEntry zu verwenden

D3_JMultiply
quelle
2

jar xf myFile.jar
Ändern Sie myFile in den Namen Ihrer Datei. Dadurch
wird der Inhalt im aktuellen Ordner der JAR-Datei gespeichert
, der dies tun sollte :)

abe312
quelle
0

Gegeben eine Datei mit dem Namen Me.Jar:

  1. Gehe zu cmd
  2. Drücke Enter
  3. Verwenden Sie Java jar Befehl - Ich verwende jdk1.8.0_31, damit ich tippen kann

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

Das sollte die Datei in den Ordner bin extrahieren. Suchen Sie nach der Datei .class in meinem Fall, meine Me.jar enthält eine Valentine.class

Typ java Valentineund drücken Sie die Eingabetaste und Ihre Nachrichtendatei geöffnet wird.

user4566153
quelle
-3

Verwenden Sie diesen Befehl über die Eingabeaufforderung, um das JAR in den angegebenen Ordner zu extrahieren

C:\Java> jar xf myFile.jar -C "C:\tempfolder"
VijayaKumar Thangavel
quelle
7
Das funktioniert nicht. -Ckann nur beim Erstellen von JAR-Dateien verwendet werden.
unwichtich
@unwichtich Gibt es in diesem Fall eine Möglichkeit, den Zielordner anzugeben?
Linie
2
Auf Linux-Systemen, die Sie verwenden könnten unzip file.jar -d dir_name_where_extracting, müssen Sie unter Windows Ihre JAR in den
Zielordner