Как разобрать jar файл
Декомпиляция Java приложений / Хабр
Декомпиляция — процесс воссоздания исходного кода декомпиляторомНедавно я задался вопросом: Какой декомпилятор лучше?
Начал мучить Google, экспериментировать. В итоге нашел отличное решение. Как декомпильнуть любую программу и получить рабочие «исходники»? Об этом в сабже.
Краткий обзор популярных декомпиляторов
Mocha
Mocha (автор — Hanpeter van Vliet)— это, вероятно, один из первых выпущенных декомпиляторов Java. Предоставляет консольный пользовательский интерфейс. Его релиз состоялся в 1996-ом году, ещё до того, как появился Java Development Kit версии 1.1
JAva Decompiler
JAva Decompiler, JAD (автор — Pavel Kouznetsov) — по всей видимости, самый
популярный декомпилятор Java. Как и Mocha, этот декомпилятор предоставляет консольный интерфейс, давно не обновляется и не поддерживается, но большое число графических инструментов для работы с ним, в том числе плагин JadClipse для среды разработки Eclipse, делают его и по сей день используемым в качестве подручного средства для декомпиляции небольших классов.
Помимо декомпиляции, JAva Decompiler обладает возможностью дизассемблирования .class-файлов.
DJ Java Decompiler
DJ Java Decompiler (автор — Atanas Neshkov) — долгое время вопреки названию являлся лишь графической оболочкой для предыдущего декомпилятора, позволявшей легко и удобно выбрать аргументы командной строки для вызова JAD. В текущей версии добавлена поддержка аннотаций, но декомпилятор стал условно-бесплатным (необходима покупка после 10 пробных использований).
JD-Core
JD-Core (автор — Emmanuel Dupuy) — очень мощная и функциональная библиотека для декомпиляции и анализа байткода Java, разработанная в рамках «Java Decompiler project».
Имеет следующие особенности:
- Полностью написана на языке C++, что делает декомпиляцию необычайно быстрой
- Не требует для работы Java Runtime Environment и поэтому не требует специальной установки
- Корректно декомпилирует .class-файлы, сгенерированные большинством компиляторов
часть самостоятельного графического приложения JD-GUI, также разработанного на C++ и прилинкованного к ней статически, или плагина JD-Eclipse для среды разработки Eclipse, что делает практически невозможным её использование в стороннем некоммерческом проекте, особенно разработанном на языке Java. Использование библиотеки в коммерческих программных продуктах запрещено автором.
Fernflower
Fernflower — один из лучших декомпиляторов языка программирования Java на сегодняшний день.
Обладает следующими возможностями:
1. Поддерживает разнообразные языковые конструкции:
- Параметрические типы
- Аннотации
- Перечислимые типы
- Утверждения
Мой выбор
JD-GUI
— для просмотра, не болееFernflower
— полное восстановление
Остановлюсь на втором. Вообще, автор данного декомпилятора вроде как не выкладывал оффлайн версию в общий доступ(или я упустил этот факт читая его блог), до последнего времени была только онлайн. Но для меня было приятным удивлением найти ее на одном форуме!
Скачать: fernflower.jar
Цитата из блога автора:
Fernflower будет развиваться в сторону деобфускатораТ.к. онлайн версия по неизвестным причинам не работает, а про оффлайн трудно что-либо сказать(кроме того, что качество декомпиляции отменное), не о каких модулях на данный момент речи быть не может.
…
Специальных функций деобфускации Fernflower сейчас не содержит, они будут подключаться в дальнейшем отдельными модулями
Не хватает еще модуля переименованияЭто да. Поищем что-то такое в интернетах.
На выручку придет Proguard, но необыкновенный
ProGuardDeobfuscator — небольшая модификация программы ProGuard, превращающая ее в квази-деобфускатор. В процессе обработки короткие обфусцированные имена пакетов, классов, полей и методов заменяются на более осмысленные и уникальные в пределах Jar файла.Скачать исходники и сам деобфускатор: projectd8.org/Programs/Java/PGD
Инструменты все есть, но лично я, для облегчения воссоздания сорцов использую так же любимую Netbeans IDE — очень сильно помогает своими подсказками, особенно когда классов много.
Спасибо за внимание!
Ссылки
se.math.spbu.ru/SE/YearlyProjects/2011/YearlyProjects/2011/345/345_Mikhailov_report.pdf
ru-java.livejournal.com
UPD:
Извиняюсь, в offline версии Fernflower присутствует модуль переименований и уйма других штук — Readme
Как декомпилировать весь файл Jar? [закрытый]
кто-нибудь знает о бесплатном декомпиляторе, который может декомпилировать весь файл Jar вместо одного класса? У меня проблема с подклассами, такими как name$1.имя класса$2.имя класса.класс!--1-->
9 ответов
прежде всего, стоит помнить, что все архивные файлы Java (.jar
/.war
/ etc...) are все в основном просто фантазии.zip
файлы, С несколькими добавленными манифестами и метаданными.
во-вторых, для решения этой проблемы я лично использую несколько инструментов, которые обрабатывают эту проблему на всех уровнях:
- Джад + Jadclipse при работе в IDE для декомпиляции
.class
файлы - в WinRAR, мой любимый инструмент сжатия изначально поддерживает архивы Java (опять же, см. Первый абзац).
- Вне Конкуренции, мой любимый инструмент diff, при правильной настройке может выполнять сравнение на лету между любым архивным файлом, включая
jar
s. Стоит попробовать.
преимущество всего вышесказанного заключается в том, что мне не нужно держать какой-либо другой внешний инструмент, который загромождает мою рабочую среду. Все, что мне когда-либо понадобится из одного из этих файлов, может быть обработано внутри моей IDE или разделено с другими файлами изначально.
35
автор: Yuval Adam
Если у вас есть как оболочка bash, так и jad:
JAR=(your jar file name) unzip -d $JAR.tmp $JAR pushd $JAR.tmp for f in `find . -name '*.class'`; do jad -d $(dirname $f) -s java -lnc $f done popd
Я могу быть крошечным, крошечным с этим, но он должен работать более или менее так, как рекламируется. Вы должны закончить с $JAR.tmp
содержащий декомпилированные файлы.
У меня был разумный успех с инструментом под названием (разочаровывающе)"JD: Java Decompiler".
Я нашел его лучше, чем большинство декомпиляторы при работе с классами, скомпилированные для Java 5 и выше. К сожалению, у него все еще могут быть некоторые икоты, где Джад обычно преуспевает.
23
автор: Adam Paynter
что-то типа:
jar -xf foo.jar && find . -iname "*.class" | xargs /opt/local/bin/jad -r
может быть?
вставить следующий текст в decompile.jar.sh
# Usage: decompile.jar.sh some.jar [-d] # clean target folders function clean_target { rm -rf $unjar $src $jad_log } # clean all debug stuff function clean_stuff { rm -rf $unjar $jad_log } # the main function function work { jar= unjar=`basename $jar.unjar` src=`basename $jar.src` jad_log=jad.log clean_target unzip -q $jar -d $unjar jad -d $src -ff -r -lnc -o -s java $unjar/**/*.class > $jad_log 2>&1 if [ ! $debug ]; then clean_stuff fi if [ -d $src ] then echo "$jar has been decompiled to $src" else echo "Got some problems check output or run in debug mode" fi } function usage { echo "This script extract and decompile JAR file" echo "Usage: some.jar [-d]" echo " where: some.jar is the target to decompile" echo " use -d for debug mode" } # check params if [ -n "" ] then if [ "" == "-d" ]; then debug=true set -x fi work else usage fi
- chmod +x decomplie.jar.sh / / исполняемый файл
- ln-s ./decomplie.сосуд.s / usr/bin / dj
готов к использованию, просто введите dj your.jar
и вы получите your.jar.src
папка с источниками. Использовать -d
опция для режима отладки.
файл jar - это просто zip-файл с расширением jar. Вы должны иметь возможность распаковать (winzip) банку так же, как zip-файл.
вы извлекаете его, а затем используете jad против реж.
Примечание: это решение работает только для пользователей Mac и * nix.
Я также пытался найти Джада, но безуспешно. Моим быстрым решением было загрузить MacJad который содержит jad. После его загрузки вы можете найти jad в [где-вы-скачали-macjad] / MacJAD / содержание / ресурсы / jad.
Чем открыть файл JAR
JAR (Java Archive File) – формат архива, в котором хранятся элементы программы, написанной на языке Java. Чаще всего файлы с таким расширением являются мобильными играми и приложениями. На компьютере можно просмотреть содержимое такого архива и/или попытаться запустить JAR как приложение.
Способы открытия JAR-архива
Для начала рассмотрим несколько программ для открытия архива JAR. Так можно убедиться, что в нём содержится всё необходимое для запуска этого приложения, а также внести требуемые изменения.
Способ 1: WinRAR
Когда речь заходит об архивах, большинству пользователей приходит на ум программа WinRAR. Для открытия файла JAR она отлично подходит.
Скачать WinRAR
- Разверните вкладку «Файл» и нажмите «Открыть архив» (Ctrl+O).
- Перейдите в место хранения JAR, выделите этот файл и нажмите кнопку «Открыть».
- В окне WinRAR отобразятся все файлы этого архива.
Обратите внимание на наличие папки «META-INF» и файла «MANIFEST.MF», который должен храниться в ней. Это позволит реализовать файл JAR в качестве исполняемого.
Найти и открыть нужный архив можно и через встроенный обозреватель файлов WinRAR.
Если с содержимым архива планируется дальнейшая работа, то потребуется разархивация.
Подробнее: Как разархивировать файлы через WinRAR
Способ 2: 7-Zip
Поддержка расширения JAR предусмотрена и в архиваторе 7-Zip.
Скачать 7-Zip
- Нужный архив можно найти прямо в окне программы. Кликните по нему правой кнопкой и нажмите «Открыть».
- Содержимое JAR будет доступно для просмотра и редактирования.
Способ 3: Total Commander
Альтернативой упомянутым программам может стать файловый менеджер Total Commander. Т.к. его функционал включает работу с архивами, открыть JAR-файл будет несложно.
Скачать Total Commander
- Укажите диск, где расположен JAR.
- Перейдите в директорию с архивом и дважды кликните по нему.
- Файлы архива будут доступны для просмотра.
Способы запуска JAR на компьютере
При необходимости запустить приложение или игру JAR понадобится один из специальных эмуляторов.
Способ 1: KEmulator
Программа KEmulator – это продвинутый Java-эмулятор, позволяющий произвести настройку всевозможных параметров запуска приложения.
Загрузить программу KEmulator
- Нажмите «Файл» и выберите пункт «Загрузить jar».
- Найдите и откройте нужный JAR.
- Через некоторое время приложение будет запущено. В нашем случае это мобильная версия Opera Mini.
Или перенесите этот файл окно программы.
На мобильных телефонах управление осуществлялось с помощью клавиатуры. В KEmulator можно включить её виртуальный аналог: нажмите «Справка» и выберите пункт «Клавиатура».
Выглядеть это будет так:
При желании в настройках программы Вы сможете задать соответствия клавиш телефона клавишам компьютера.
Обратите внимание, что в папке с JAR появится файл «kemulator.cfg», в котором прописаны параметры работы этого приложения. Если его удалить, то все настройки и сохранения (если речь идёт об игре) удалятся.
Способ 2: MidpX
Программа MidpX нет так функциональна, как KEmulator, но со своей задачей справляется.
Загрузить программу MidpX
После установки все файлы JAR будут ассоциироваться с MidpX. Это можно понять по изменившейся иконке:
Дважды кликните по ней и приложение будет запущено. При этом виртуальная клавиатура уже интегрирована в интерфейс программы, однако настроить управление с клавиатуры ПК тут нельзя.
Способ 3: Sjboy Emulator
Ещё один простой вариант для запуска JAR – это Sjboy Emulator. Главная его особенность заключается в возможности выбора скинов.
Загрузить программу Sjboy Emulator
- Откройте контекстное меню JAR-файла.
- Наведите курсор на «Открыть с помощью».
- Выберите пункт «Open With SjBoy Emulator».
Клавиатура тут также интегрирована.
Итак, мы выяснили, что JAR можно открыть не только как обычный архив, но и запустить на компьютере через Java-эмулятор. В последнем случае удобнее всего использовать KEmulator, хотя и другие варианты тоже имеют свои преимущества, например, возможность изменять оформление окна.
Мы рады, что смогли помочь Вам в решении проблемы.Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.
Помогла ли вам эта статья?
ДА НЕТОткрытие jar файлов на компьютере. Как открыть файл jar на компьютере? Использование утилиты jar
JAR (Java Archive File) – формат архива, в котором хранятся элементы программы, написанной на языке Java. Чаще всего файлы с таким расширением являются мобильными играми и приложениями. На компьютере можно просмотреть содержимое такого архива и/или попытаться запустить JAR как приложение.
Способы открытия JAR-архива
Для начала рассмотрим несколько программ для открытия архива JAR. Так можно убедиться, что в нём содержится всё необходимое для запуска этого приложения, а также внести требуемые изменения.
Способ 1: WinRAR
Когда речь заходит об архивах, большинству пользователей приходит на ум программа WinRAR. Для открытия файла JAR она отлично подходит.
Обратите внимание на наличие папки «META-INF» и файла «MANIFEST.MF», который должен храниться в ней. Это позволит реализовать файл JAR в качестве исполняемого.
Найти и открыть нужный архив можно и через встроенный обозреватель файлов WinRAR.
Если с содержимым архива планируется дальнейшая работа, то потребуется разархивация.
Подробнее: Как разархивировать файлы через WinRAR
Способ 2: 7-Zip
Поддержка расширения JAR предусмотрена и в архиваторе 7-Zip.
Способ 3: Total Commander
Альтернативой упомянутым программам может стать файловый менеджер Total Commander. Т.к. его функционал включает работу с архивами, открыть JAR-файл будет несложно
Способы запуска JAR на компьютере
При необходимости запустить приложение или игру JAR понадобится один из специальных эмуляторов.
Способ 1: KEmulator
Программа KEmulator – это продвинутый Java-эмулятор, позволяющий произвести настройку всевозможных параметров запуска приложения.
Загрузить программу KEmulator
На мобильных телефонах управление осуществлялось с помощью клавиатуры. В KEmulator можно включить её виртуальный аналог: нажмите «Справка» и выберите пункт «Клавиатура».
Выглядеть это будет так:
При желании в настройках программы Вы сможете задать соответствия клавиш телефона клавишам компьютера.
Обратите внимание, что в папке с JAR появится файл «kemulator.cfg», в котором прописаны параметры работы этого приложения. Если его удалить, то все настройки и сохранения (если речь идёт об игре) удалятся.
Способ 2: MidpX
Программа MidpX нет так функциональна, как KEmulator, но со своей задачей справляется.
Загрузить программу MidpX
После установки все фа
Как установить jar файл на Android - Java | Полезные советы и инструкции для Android | InDevices.ru
Прежде чем производить различные действия над своим устройством рекомендуем прочитать данную статью полностью
Большинство пользователей Android сталкиваются с проблемой установки jar файлов на свой гаджет, что не мудрено – поддержка java в Андроиде не встроена по умолчанию. Решение состоит в установке эмуляторов JAVA ME для Android. Их достаточное количество, у каждого есть не только положительные стороны, но и проблемы с запуском определенных jar файлов.
Содержание
Способ 1 Установка эмулятора Java J2ME Runner
- Что потребуется
- Инструкция
- Стоит обратить внимание
- Советы
Способ 2 Установка эмулятора JBed
- Что потребуется
- Инструкция
- Стоит обратить внимание
- Советы
Способ 1 Установка эмулятора Java J2ME Runner
Что потребуется
1. Ваш гаджет с подключением к интернету.
2. Дистрибутив Java J2ME Runner.
Инструкция
1.Программа открыта и бесплатна. Ее можно скачать из интернета, после чего она появится в менеджере файлов с расширением .ark. Java J2ME Runner не умеет распознавать софт, загруженный на карту памяти вашего гаджета, – придется заново закачивать желаемые программы.
2. Применение.
При попытке скачивания необходимого jar-файла последний запросит программу для закачки – тут-то за дело возьмется Java J2ME Runner. Его ключевая задача – закачка и установка выбранного вами приложения. В результате иконка программы появится в главном меню устройства.
Стоит обратить внимание
Существенный минус эмулятора – в проблемах запуска довольно немалого количесва jar-файлов, что в какой-то мере компенсируется простотой в установке и использовании.
Советы
Обезопасьте себя от ПО-вредителя при скачивании – используйте антивирус.
Способ 2 Установка эмулятора JBed
Что потребуется
1. Компьютер.
2. ПО WinRar/WinZip
3. Ваш гаджет с подключением к интернету.
4. Root-менеджер.
Инструкция
1. Закачка и установка JBed.
Аналогично скачиваем Jbed из интернета, расширение известное — .apk.
2. Установка Root-менеджера.
Вам потребуется установить на ваш ПК любой root-менеджер из Андроид Маркета (Root manager, root explorer и т.д.)
3. Перенос Jbed.apk
С помощью установленного root-менеджера переносим Jbed.apk в директорию /system/app/.
4. Редактирование Jbed.apk.
Используя ПК, переименовуем Jbed.apk в Jbed.zip и после открываем любым известным вам архиватором (WinRar, WinZip, 7Z). Заходим в директорию /lib/armeabi/ и находим файл libjbedvm.so.
5. Установка софта на гаджет.
Записываем libjbedvm.so на карту памяти, после чего с помощью root-менеджера переносим его по адресу /system/lib.
6. Перезагрузка.
Перезагружаем телефон, после чего в меню появится пункт Java.
7. Применение.
Записываем jar-файлы на карту памяти, после чего с помощью вашего файл-менеджера пробуем их открыть, выбрав пункт «Открыть с помощью Java».
Стоит обратить внимание
Еще один эмулятор, в преимущества которого входит отсутствие проблем с запуском практически всех jar файлов. В недостатки можно записать более трудоемкий процесс установки, который заключается по большей мере в получении root-прав. Получение данных прав зависит от конкретной модели устройства – у каждого индивидуальные особенности.
Советы
Будьте осторожны с правами root, не производите действий, в которых не уверенны — есть огромная возможность нанести критический вред системе.
Навигация по записям
java - Как правильно анализировать записи файла manifest.mf в jar?
Переполнение стека- Около
- Товары
- Для команд
- Переполнение стека Общественные вопросы и ответы
Как разобрать имя файла в java?
Переполнение стека- Около
- Товары
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
- как создать файл jar из снимка Univocity Parsers?
Переполнение стека- Около
- Товары
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека
java - Преобразование URI jar-файла в файл
Переполнение стека- Около
- Товары
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
Основы (Учебники Java ™> Развертывание> Упаковка программ в файлы JAR)
Учебники Java были написаны для JDK 8. Примеры и практики, описанные на этой странице, не используют преимущества улучшений, представленных в более поздних выпусках, и могут использовать технологии, которые больше не доступны.
Обзор обновленных языковых функций в Java SE 9 и последующих выпусках см. В разделе «Изменения языка Java».
См. Примечания к выпуску JDK для получения информации о новых функциях, улучшениях, а также удаленных или устаревших параметрах для всех выпусков JDK.
JAR упакованы в формат файла ZIP, поэтому вы можете использовать их для таких задач, как сжатие данных без потерь, архивирование, распаковка и распаковка архивов. Эти задачи являются одними из наиболее распространенных применений файлов JAR, и вы можете реализовать многие преимущества файла JAR, используя только эти основные функции.
Даже если вы хотите воспользоваться преимуществами расширенных функций, предоставляемых форматом файлов JAR, таких как электронная подпись, вам сначала необходимо ознакомиться с основными операциями.
Для выполнения основных задач с файлами JAR вы используете инструмент Java Archive Tool, входящий в состав Java Development Kit (JDK). Поскольку инструмент Java Archive вызывается с помощью команды jar, в этом руководстве он называется «инструментом Jar».
В качестве краткого обзора и предварительного просмотра некоторых тем, которые будут рассмотрены в этом разделе, следующая таблица суммирует общие операции с файлами JAR:
Эксплуатация | Команда |
---|---|
Для создания файла JAR | jar cf файл (ы) ввода jar |
Для просмотра содержимого файла JAR | jar tf jar-файл |
Для извлечения содержимого файла JAR | jar xf jar-файл |
Для извлечения определенных файлов из файла JAR | jar xf файл jar заархивированный файл (ы) |
Для запуска приложения, упакованного как файл JAR (требуется заголовок манифеста основного класса) | java -jar приложение.банка |
Для вызова апплета, упакованного как файл JAR | <код апплета = AppletClassName.class archive = " JarFileName.jar " ширина = ширина высота = высота > |
В этом разделе показано, как выполнять наиболее распространенные операции с файлом JAR, с примерами для каждой из основных функций:
В этом разделе показано, как использовать инструмент Jar для упаковки файлов и каталогов в файл JAR.
Вы можете отобразить оглавление JAR-файла, чтобы увидеть, что он содержит, без фактической распаковки JAR-файла.
Вы можете использовать инструмент Jar для распаковки файла JAR. При извлечении файлов инструмент Jar делает копии нужных файлов и записывает их в текущий каталог, воспроизводя структуру каталогов, которая есть у файлов в архиве.
В этом разделе показано, как обновить содержимое существующего файла JAR, изменив его манифест или добавив файлы.
В этом разделе показано, как вызывать и запускать апплеты и приложения, упакованные в файлы JAR.
Дополнительные ссылки
Документация для JDK включает справочные страницы для инструмента Jar:
.Создание файла JAR (Руководства по Java ™> Развертывание> Упаковка программ в файлы JAR)
Основной формат команды для создания файла JAR:
jar cf jar-файл входной файл (ы)
В этой команде используются следующие параметры и аргументы:
- Параметр c указывает, что вы хотите создать файл JAR.
- Параметр f указывает, что вы хотите, чтобы выходные данные направлялись в файл , а не в стандартный вывод.
- jar-file - это имя, которое вы хотите, чтобы получившийся JAR-файл имел. Вы можете использовать любое имя файла для файла JAR. По соглашению, имена файлов JAR имеют расширение .jar, хотя это не обязательно.
- Аргумент input-file (s) - это список одного или нескольких файлов, разделенных пробелами, которые вы хотите включить в свой JAR-файл. Аргумент входного файла (ов) может содержать подстановочный знак *. Если какие-либо из «входных файлов» являются каталогами, содержимое этих каталогов рекурсивно добавляется в архив JAR.
Опции c и f могут появляться в любом порядке, но между ними не должно быть пробелов.
Эта команда сгенерирует сжатый файл JAR и поместит его в текущий каталог. Команда также сгенерирует файл манифеста по умолчанию для архива JAR.
Примечание:
Метаданные в файле JAR, такие как имена записей, комментарии и содержимое манифеста, должны быть закодированы в UTF8.
Вы можете добавить любой из этих дополнительных параметров к параметрам cf базовой команды:
Опция | Описание |
---|---|
в | Создает подробный вывод на стандартный вывод во время построения файла JAR.Подробный вывод сообщает вам имя каждого файла по мере его добавления в файл JAR. |
0 (ноль) | Указывает, что вы не хотите, чтобы файл JAR был сжат. |
M | Указывает, что файл манифеста по умолчанию не должен создаваться. |
м | Используется для включения информации манифеста из существующего файла манифеста. Формат использования этой опции: jar cmf jar-file существующий-манифест входной файл (ы)Увидеть Изменение файла манифеста для получения дополнительной информации об этой опции.
Предупреждение: Манифест должен заканчиваться новой строкой или символом возврата каретки. Последняя строка не будет проанализирована должным образом, если она не заканчивается новой строкой или возвратом каретки. |
-C | Для смены директорий во время выполнения команды. См. Пример ниже. |
Примечание:
Когда вы создаете файл JAR, время создания сохраняется в файле JAR. Следовательно, даже если содержимое файла JAR не изменится, при создании файла JAR несколько раз полученные файлы не будут полностью идентичны.Вы должны знать об этом, когда используете файлы JAR в среде сборки. Для управления версиями файла JAR рекомендуется использовать информацию о версиях в файле манифеста, а не время создания. Увидеть Раздел «Настройка информации о версии пакета».
Пример
Давайте посмотрим на пример. Простой апплет TicTacToe. Вы можете увидеть исходный код этого апплета, загрузив пакет JDK Demos and Samples с Загрузки Java SE. Эта демонстрация содержит файлы классов, аудиофайлы и изображения, имеющие такую структуру:
Папка TicTacToe ИерархияПодкаталоги audio и images содержат звуковые файлы и изображения GIF, используемые апплетом.
Вы можете получить все эти файлы из каталога jar / examples , когда загрузите весь учебник онлайн. Чтобы упаковать эту демонстрацию в один файл JAR с именем TicTacToe.jar, вы должны запустить эту команду из каталога TicTacToe:
jar cvf TicTacToe.jar TicTacToe.class аудио изображения
Аргументы аудио и изображений представляют каталоги, поэтому инструмент Jar рекурсивно помещает их и их содержимое в файл JAR. Сгенерированный JAR-файл TicTacToe.jar будет помещен в текущий каталог. Поскольку команда использовала параметр v для подробного вывода, вы увидите что-то похожее на этот вывод, когда запустите команду:
добавление: TicTacToe.class (in = 3825) (out = 2222) (спущено 41%) добавление: audio / (in = 0) (out = 0) (сохранено 0%) добавление: audio / beep.au (in = 4032) (out = 3572) (спущено на 11%) добавление: audio / ding.au (in = 2566) (out = 2055) (спущено на 19%) добавление: audio / return.au (in = 6558) (out = 4401) (спущено 32%) добавление: audio / yahoo1.au (in = 7834) (out = 6985) (спущено на 10%) добавление: audio / yahoo2.au (in = 7463) (out = 4607) (спущено 38%) добавление: images / (in = 0) (out = 0) (сохранено 0%) добавление: images / cross.gif (in = 157) (out = 160) (спущено -1%) добавление: images / not.gif (in = 158) (out = 161) (спущено -1%)
Из этого вывода видно, что файл JAR TicTacToe.jar сжат. Инструмент Jar по умолчанию сжимает файлы. Вы можете отключить функцию сжатия, используя параметр 0 (ноль), чтобы команда выглядела так:
jar cvf0 TicTacToe.jar Звуковые изображения TicTacToe.class
Возможно, вы захотите избежать сжатия, например, чтобы увеличить скорость, с которой файл JAR может быть загружен браузером.Несжатые файлы JAR обычно загружаются быстрее, чем сжатые файлы, поскольку отпадает необходимость распаковывать файлы во время загрузки. Однако есть компромисс в том, что время загрузки по сети может быть больше для больших несжатых файлов.
Инструмент Jar принимает аргументы, в которых используется подстановочный знак *. Если в каталоге TicTacToe не было нежелательных файлов, вы могли использовать эту альтернативную команду для создания файла JAR:
Хотя подробный вывод этого не указывает, инструмент Jar автоматически добавляет файл манифеста в архив JAR с именем пути META-INF / MANIFEST.MF. Увидеть Работа с файлами манифеста: раздел Основы для получения информации о файлах манифеста.
В приведенном выше примере файлы в архиве сохранили свои относительные имена путей и структуру каталогов. Инструмент Jar предоставляет параметр -C, который можно использовать для создания файла JAR, в котором относительные пути к заархивированным файлам не сохраняются. Он создан по образцу опции -C в TAR.
В качестве примера предположим, что вы хотите поместить аудиофайлы и изображения в формате gif, используемые демонстрацией TicTacToe, в файл JAR, и что вы хотите, чтобы все файлы находились на верхнем уровне, без иерархии каталогов.Вы можете сделать это, выполнив эту команду из родительского каталога изображений и аудио каталогов:
jar cf ImageAudio.jar -C images. -С аудио.
Часть этой команды -C images указывает инструменту Jar перейти в каталог изображений, а файл. следующий -C images указывает инструменту Jar архивировать все содержимое этого каталога. -C audio. часть команды затем делает то же самое с аудио каталогом. Результирующий JAR-файл будет иметь следующее содержание:
МЕТА-ИНФ / МАНИФЕСТ.MF cross.gif not.gif beep.au ding.au return.au yahoo1.au yahoo2.au
Напротив, предположим, что вы использовали команду, в которой не использовалась опция -C:
jar cf ImageAudio.jar изображения аудио
Результирующий JAR-файл будет иметь следующее содержание:
МЕТА-ИНФ / МАНИФЕСТ.MF images / cross.gif images / not.gif audio / beep.au audio / ding.au audio / return.au audio / yahoo1.au audio / yahoo2.au.