Ho file .class e .java nell'archivio JAR. C'è un modo per estrarre solo i file .java da esso? Ho provato questo comando, ma non funziona:JAR - estrazione di file specifici
jar xf jar-file.jar *.java
Ho file .class e .java nell'archivio JAR. C'è un modo per estrarre solo i file .java da esso? Ho provato questo comando, ma non funziona:JAR - estrazione di file specifici
jar xf jar-file.jar *.java
È possibile utilizzare il comando unzip
che accetta i caratteri jolly nelle sue argomentazioni (che non è il caso del comando jar
). Qualcosa del genere dovrebbe fare il trucco (disclaimer: non testato)
unzip youFile.jar "*.java"
Grande! Funziona, grazie :) – user3521479
Dal source:
Per estrarre solo alcuni file da un file jar, fornire i loro nomi di file:
C:\Java> jar xf myFile.jar foo bar
L'utilizzo di caratteri jolly è una cosa di shell e non è necessario aspettarsi che funzioni quando estraendo da un file JAR (che, come hai capito, è il caso).
Cosa si può fare, è fornire un elenco dei file che si desidera estrarre, attraverso il @
modificatore:
jar xf my.jar @myfiles.lst
dove myfiles.lst
sarebbe:
com/my/MyClass.java
com/my/MySecondClass.java
Questo file potrebbe facilmente essere creato automaticamente con l'uso creativo di jar tvf
, awk
e il modello di estrazione desiderato. Lo lascerò come esercizio e/o un'altra domanda SO :-)
Oppure potresti usare unzip
- un file JAR è fondamentalmente un file zip.
Cheers,
Ok, lo so, questo è nella documentazione, ma jar supporta qualsiasi regex? Non l'ho trovato da nessuna parte:/ – user3521479
Non ci dovrebbe essere alcun file .java * in un barattolo, solo i file di classe. Puoi controllare il contenuto del vaso eseguendo prima:
jar tvf jar-file.jar
Perché non devi solo estrarre tutti i file ed eliminare quelli che non ti servono? – Strikeskids
Da dove viene questo JAR? Non è una buona pratica raggruppare i file sorgente e di classe nello stesso JAR ... – Puce
Perché è una soluzione più brutta e più lenta. Ci sono circa 10000 file lì. – user3521479