Витяг .jar-файлу з командним рядком


115

Я намагаюся витягнути файли з файлу .jar. Як це зробити за допомогою командного рядка?

Я працюю під управлінням Windows 7

Відповіді:


147

З документів :

Щоб витягти файли з файлу 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 знаходиться в змінній середовищі вашого контуру, вам доведеться вказати повний шлях / запустити програму всередині папки.

EDIT: Ось ще одна стаття, спеціально зосереджена на витягуванні JAR: http://docs.oracle.com/javase/tutorial/deployment/jar/unpack.html


Гаразд, коли я виконую цю команду jar xf ..., я отримую помилку: 'jar' не розпізнається як внутрішня чи зовнішня команда, функціонуюча програма чи пакетний файл. Як це виправити?
Боббі C

1
@BobbyC: Вкажіть повний шлях jar.exeабо запустіть його всередині папки.
AusCBloke

Дякую, зараз все добре!
Боббі C

2
java.io.IOException: META-INF: не вдалося створити каталог у sun.tools.jar.Main.extractFile (Main.java:928) на sun.tools.jar.Main.extract (Main.java:852) у sun .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) може заглянути всередину банку.


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, з якого слід витягувати файли, задається в командному рядку, а не через stdin.


2

У Java є клас, спеціально для поштових файлів, і ще більш конкретно для файлів 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: \ програмні файли (x86) \ Java \ jdk1.8.0_31 \ bin \ jar xf me.jar

Це має витягнути файл у скриньку папок. Шукайте файл .class у моєму випадку мій Me.jar містить Valentine.class

Введіть java Valentineі натисніть Enter, і файл вашого повідомлення буде відкрито.


-3

Щоб витягти банку в задану папку, скористайтеся цією командою за допомогою командного рядка

C:\Java> jar xf myFile.jar -C "C:\tempfolder"

7
Це не працює. -Cможе використовуватися лише під час створення jar файлів.
unichtich

@unwichtich Чи є в цьому випадку спосіб вказати папку призначення?
Лінія

2
У системах Linux, якими ви могли б скористатися unzip file.jar -d dir_name_where_extracting, у Windows потрібно скопіювати / перенести свій JAR у папку призначення, а потім витягнути його туди ...
unichtich
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.