Извлечение файла .jar с помощью командной строки

116

Я пытаюсь извлечь файлы из файла .jar. Как мне это сделать с помощью командной строки?

Я использую Windows 7

Бобби С
источник

Ответы:

148

Из документов :

Чтобы извлечь файлы из файла jar, используйте x, как в:

C:\Java> jar xf myFile.jar

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

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

Папка, в которой jar, вероятно, не C:\Javaдля вас, в моем разделе Windows это:

C:\Program Files (x86)\Java\jdk[some_version_here]\bin

Если местоположение не jarнаходится в переменной среды вашего пути, вам нужно будет указать полный путь / запустить программу из папки.

РЕДАКТИРОВАТЬ: вот еще одна статья, специально посвященная извлечению JAR: http://docs.oracle.com/javase/tutorial/deployment/jar/unpack.html

AusCBloke
источник
Хорошо, когда я выполняю эту команду jar xf ..., я получаю сообщение об ошибке: «jar» не распознается как внутренняя или внешняя команда, работающая программа или командный файл. Как это исправить?
Bobby C
1
@BobbyC: укажите полный путь jar.exeили запустите его из папки.
AusCBloke
Спасибо, теперь все нормально!
Bobby C
2
java.io.IOException: META-INF: не удалось создать каталог в sun.tools.jar.Main.extractFile (Main.java:928) в sun.tools.jar.Main.extract (Main.java:852) на солнце .tools.jar.Main.run (Main.java:242) на sun.tools.jar.Main.main (Main.java:1149) как удалить эту ошибку?
AnilPatel
1
@AnilPatel Я исправил это, запустив командную строку от имени администратора (щелкните правой кнопкой мыши «Запуск от имени администратора»)
jessieloo
34

Обратите внимание, что jar-файл - это Zip-файл, и любой инструмент Zip (например, 7-Zip) может заглянуть внутрь jar.

Горячие лижет
источник
6
Пожалуйста, посмотрите сюда, это то, что вам всем нужно.
Али
28

В Ubuntu:

unzip file.jar -d dir_name_where_extracting

burtsevyg
источник
1
Полезно для систем, в которых нет jarкоманды! Работает без проблем на CentOS 5.7
djthoms
8

Вы можете использовать следующую команду: jar xf rt.jar

Где Xозначает извлечение, а там fбудут любые параметры, указывающие, что файл JAR, из которого должны быть извлечены файлы, указан в командной строке, а не через стандартный ввод.

Нихил Арора
источник
2

В Java есть класс специально для zip-файлов, а еще один - для Jar-файлов.

java.util.jar.JarOutputStream
java.util.jar.JarInputStream

используя те, которые вы могли бы, по команде с консоли, используя сканер, установленный на system.in

Scanner console = new Scanner(System.in);
String input = console.nextLine();

затем получите все компоненты и запишите их в виде файла.

JarEntry JE = null;
while((JE = getNextJarEntry()) != null)
{
    //do stuff with JE
}

Вместо этого вы также можете использовать java.util.zip.ZipInputStream, поскольку, видя, что файл JAR находится в том же формате, что и файл ZIP, ZipInputStream сможет обрабатывать файл Jar, на самом деле JarInputStream фактически расширяет ZipInputStream.

альтернатива также вместо getNextJarEntry использовать getNextEntry

D3_JMultiply
источник
2

jar xf myFile.jar
измените myFile на имя вашего файла,
это сохранит содержимое в текущей папке файла .jar,
что должно быть :)

abe312
источник
0

Учитывая файл с именем Me.Jar:

  1. Перейти в cmd
  2. Нажмите Enter
  3. Используйте команду Java jar- я использую jdk1.8.0_31, поэтому набираю

    C: \ Program Files (x86) \ Java \ jdk1.8.0_31 \ bin \ jar xf me.jar

Это должно извлечь файл в папку bin. Найдите файл .class, в моем случае мой Me.jar содержит Valentine.class

Введите java Valentineи нажмите Enter, и ваш файл сообщения будет открыт.

пользователь4566153
источник
-3

Чтобы извлечь банку в указанную папку, используйте эту команду через командную строку

C:\Java> jar xf myFile.jar -C "C:\tempfolder"
ВиджаяКумар Тангавел
источник
7
Это не работает. -Cможет использоваться только при создании файлов jar.
notichtich 03 янв.15
@unwichtich В таком случае есть способ указать папку назначения?
Line
2
В системах Linux вы можете использовать unzip file.jar -d dir_name_where_extracting, в Windows вам нужно скопировать / переместить ваш JAR в папку назначения, а затем распаковать его там ...
неуместное