2014-09-22 3 views
14

У меня есть .class и .java файлы в архиве JAR. Есть ли способ извлечь из него только файлы .java? Я попробовал эту команду, но она не работает:JAR - извлечение определенных файлов

jar xf jar-file.jar *.java 
+0

Почему бы вам не просто извлечь все файлы и удалить те, которые вам не нужны? – Strikeskids

+0

Откуда этот JAR? Неправильная практика заключается в том, чтобы упаковать исходный код и файлы классов в одном JAR ... – Puce

+0

Потому что это более уродливое и медленное решение. Там около 10000 файлов. – user3521479

ответ

17

Вы можете использовать unzip команды, которая принимает групповые символы в своих аргументах (это не относится к команде jar). Что-то вроде этого следует сделать трюк (отказ от ответственности: не тестировалось)

unzip youFile.jar "*.java" 
+0

Отлично! Это работает, спасибо :) – user3521479

15

От source:

Чтобы извлечь только определенные файлы из файла фляги, поставить их имена:

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

Использование подстановочных знаков - это оболочка, и вы не должны ожидать ее работы, когда извлечение из файла JAR (что, как вы поняли, имеет место).

Что вы можете сделать, это предоставить список файлов, которые вы хотите извлечь, с помощью @ модификатора:

jar xf my.jar @myfiles.lst 

где myfiles.lst будет:

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

Этот файл может легко создаются с использованием творческого использования jar tvf, awk и желаемого рисунка экстракции. Я оставлю это как упражнение и/или другой вопрос SO :-)

Или вы можете использовать unzip - файл JAR в основном представляет собой zip-файл.

Приветствие,

+0

Хорошо, я знаю это, это в документации, но поддерживает ли jar какие-либо регулярные выражения? Я ничего не нашел:/ – user3521479

-1

Там не должно быть каких-либо * .java файлы в баночку, только файлы классов. Сначала вы можете проверить содержимое банки:

jar tvf jar-file.jar 
Смежные вопросы