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 - Extrahieren bestimmter Dateien
jar xf jar-file.jar *.java
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 - Extrahieren bestimmter Dateien
jar xf jar-file.jar *.java
können Sie den unzip
Befehl verwenden, die Platzhalter in seinen Argumenten akzeptiert (was nicht der Fall des jar
Befehls ist). So etwas sollte den Trick (Disclaimer: nicht getestet)
unzip youFile.jar "*.java"
Großartig! Es funktioniert, danke :) – user3521479
Vom source:
Um nur bestimmte Dateien aus einer JAR-Datei, liefern ihre Dateinamen zu extrahieren:
C:\Java> jar xf myFile.jar foo bar
Verwenden von Platzhaltern ist eine Shell-Sache, und Sie sollten nicht erwarten, dass es funktioniert, wenn Extrahieren aus einer JAR-Datei (die, wie Sie festgestellt haben, der Fall ist).
Was Sie können tun, ist eine Liste der Dateien liefern Sie extrahieren möchten, über den @
Modifikator:
jar xf my.jar @myfiles.lst
wo myfiles.lst
wäre:
com/my/MyClass.java
com/my/MySecondClass.java
Diese Datei konnte einfach mit kreativer Verwendung von jar tvf
, awk
und Ihrem gewünschten Extraktionsmuster automatisch erstellt werden. Ich überlasse das als Übung und/oder eine andere SO-Frage :-)
Oder Sie könnten unzip
verwenden - eine JAR-Datei ist im Grunde eine Zip-Datei.
Cheers,
Ok Ich weiß es, das ist in der Dokumentation, aber unterstützt Jar irgendwelche Regexes? Ich habe es nirgendwo gefunden:/ – user3521479
Es sollte keine * .java-Dateien in einem Glas sein, nur Klassendateien. Sie können den Inhalt des Jars zuerst überprüfen, indem Sie Folgendes ausführen:
jar tvf jar-file.jar
Warum extrahieren Sie nicht einfach alle Dateien und löschen Sie die, die Sie nicht benötigen? – Strikeskids
Woher kommt dieses JAR? Es ist keine gute Praxis, die Quell- und Klassendateien in derselben JAR zu packen ... – Puce
Weil es hässlicher und langsamer ist. Da sind ungefähr 10000 Dateien. – user3521479