Извлечение файла .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


Хорошо, когда я выполняю эту команду 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


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


2

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


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, и ваш файл сообщения будет открыт.


-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 в папку назначения, а затем распаковать его там ...
неуместное
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.