JAR - извлечение определенных файлов

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

jar xf jar-file.jar *.java

Ответы

Ответ 1

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

unzip youFile.jar "*.java"

Ответ 2

Из источника :

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

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 файл.

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

Ответ 3

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

jar tvf jar-file.jar