Frage JAR - Extrahieren bestimmter Dateien


Ich habe .class- und .java-Dateien im JAR-Archiv. Gibt es eine Möglichkeit, nur .java-Dateien daraus zu extrahieren? Ich habe diesen Befehl versucht, aber es funktioniert nicht:

jar xf jar-file.jar *.java

18
2017-09-22 11:22


Ursprung


Antworten:


Du kannst den ... benutzen unzip Befehl, der Platzhalter in seinen Argumenten akzeptiert (was nicht der Fall der jar Befehl). So etwas sollte den Trick machen (Disclaimer: nicht getestet)

unzip youFile.jar "*.java"

23
2017-09-22 11:42



Von dem Quelle:

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

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

Die Verwendung von Platzhaltern ist eine Shell-Sache, und Sie sollten nicht erwarten, dass es funktioniert, wenn extrahieren aus einer JAR-Datei (was, wie Sie festgestellt haben, der Fall ist).

Was du kann tun, ist eine Liste der Dateien, die Sie extrahieren möchten, über die @ Modifikator:

jar xf my.jar @myfiles.lst

woher myfiles.lst wäre:

com/my/MyClass.java
com/my/MySecondClass.java

Diese Datei könnte einfach automatisch mit kreativer Verwendung erstellt werden jar tvf, awk und dein gewünschtes Extraktionsmuster. Ich überlasse das als Übung und / oder eine andere SO-Frage :-)

Oder du könntest es benutzen unzip - Eine JAR-Datei ist grundsätzlich eine Zip-Datei.

Prost,


22
2017-09-22 11:29



Es sollte keine * .java-Dateien in einem Jar geben, nur Klassen-Dateien. Sie können den Inhalt des Jars zuerst überprüfen, indem Sie Folgendes ausführen:

jar tvf jar-file.jar

-1
2018-04-22 10:29