Mam pliki .class i .java w archiwum JAR. Czy istnieje sposób na wyodrębnienie z niego tylko plików .java? Próbowałem tego polecenia, ale to nie działa:JAR - wyodrębnianie określonych plików
jar xf jar-file.jar *.java
Mam pliki .class i .java w archiwum JAR. Czy istnieje sposób na wyodrębnienie z niego tylko plików .java? Próbowałem tego polecenia, ale to nie działa:JAR - wyodrębnianie określonych plików
jar xf jar-file.jar *.java
Można użyć polecenia unzip
który akceptuje symboli wieloznacznych w swoich argumentów (co nie jest w przypadku komendy jar
). Coś takiego powinno wystarczyć (Uwaga: nie testowane)
unzip youFile.jar "*.java"
Świetnie! Działa, dzięki :) – user3521479
Z source:
Aby wyodrębnić tylko niektóre pliki z pliku jar, dostarczają ich nazw:
C:\Java> jar xf myFile.jar foo bar
Korzystanie z symboli wieloznacznych to rzecz skorupkowa i nie należy oczekiwać, że zadziała, gdy wyodrębniając z pliku JAR (który, jak sobie uświadomiłeś, jest w tym przypadku).
Co może zrobić, to dostarczyć listę plików, które chcesz wyodrębnić, poprzez @
modyfikatora:
jar xf my.jar @myfiles.lst
gdzie myfiles.lst
byłoby:
com/my/MyClass.java
com/my/MySecondClass.java
Ten plik może łatwo tworzyć automatycznie z kreatywnym wykorzystaniem jar tvf
, awk
i żądanego wzoru ekstrakcji. Zostawię to jako ćwiczenie i/lub inne pytanie SO :-)
Albo możesz użyć unzip
- plik JAR jest w zasadzie plikiem zip.
Cheers,
OK Wiem, to jest w dokumentacji, ale czy jar obsługuje wszystkie wyrażenia regularne? Nigdzie go nie znalazłem:/ – user3521479
nie powinno być jakieś pliki * .java w słoiku tylko pliki klasowe. Najpierw możesz sprawdzić zawartość słoja, uruchamiając:
jar tvf jar-file.jar
Dlaczego po prostu nie wyodrębnisz wszystkich plików i nie usuniesz tych, których nie potrzebujesz? – Strikeskids
Skąd się bierze ten JAR? Nie jest dobrą praktyką pakowanie plików źródłowych i klasowych w tym samym JAR ... – Puce
Ponieważ jest to brzydsze i wolniejsze rozwiązanie. Jest tam około 10000 plików. – user3521479