Просмотр информации jar-архива


Содержание

Разархивация и запуск файлов JAR

JAR (Java Archive File) – формат архива, в котором хранятся элементы программы, написанной на языке Java. Чаще всего файлы с таким расширением являются мобильными играми и приложениями. На компьютере можно просмотреть содержимое такого архива и/или попытаться запустить JAR как приложение.

Способы открытия JAR-архива

Для начала рассмотрим несколько программ для открытия архива JAR. Так можно убедиться, что в нём содержится всё необходимое для запуска этого приложения, а также внести требуемые изменения.

Способ 1: WinRAR

Когда речь заходит об архивах, большинству пользователей приходит на ум программа WinRAR. Для открытия файла JAR она отлично подходит.

    Разверните вкладку «Файл» и нажмите «Открыть архив» (Ctrl+O).

Перейдите в место хранения JAR, выделите этот файл и нажмите кнопку «Открыть».

Обратите внимание на наличие папки «META-INF» и файла «MANIFEST.MF», который должен храниться в ней. Это позволит реализовать файл JAR в качестве исполняемого.

Найти и открыть нужный архив можно и через встроенный обозреватель файлов WinRAR.

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

Способ 2: 7-Zip

Поддержка расширения JAR предусмотрена и в архиваторе 7-Zip.

    Нужный архив можно найти прямо в окне программы. Кликните по нему правой кнопкой и нажмите «Открыть».

Содержимое JAR будет доступно для просмотра и редактирования.

Способ 3: Total Commander

Альтернативой упомянутым программам может стать файловый менеджер Total Commander. Т.к. его функционал включает работу с архивами, открыть JAR-файл будет несложно.

  1. Укажите диск, где расположен JAR.
  2. Перейдите в директорию с архивом и дважды кликните по нему.

Файлы архива будут доступны для просмотра.

Способы запуска JAR на компьютере

При необходимости запустить приложение или игру JAR понадобится один из специальных эмуляторов.

Способ 1: KEmulator

Программа KEmulator – это продвинутый Java-эмулятор, позволяющий произвести настройку всевозможных параметров запуска приложения.

    Нажмите «Файл» и выберите пункт «Загрузить jar».

Найдите и откройте нужный JAR.

Или перенесите этот файл окно программы.

Через некоторое время приложение будет запущено. В нашем случае это мобильная версия Opera Mini.

На мобильных телефонах управление осуществлялось с помощью клавиатуры. В KEmulator можно включить её виртуальный аналог: нажмите «Справка» и выберите пункт «Клавиатура».

Выглядеть это будет так:

При желании в настройках программы Вы сможете задать соответствия клавиш телефона клавишам компьютера.

Обратите внимание, что в папке с JAR появится файл «kemulator.cfg», в котором прописаны параметры работы этого приложения. Если его удалить, то все настройки и сохранения (если речь идёт об игре) удалятся.

Способ 2: MidpX

Программа MidpX нет так функциональна, как KEmulator, но со своей задачей справляется.

После установки все файлы JAR будут ассоциироваться с MidpX. Это можно понять по изменившейся иконке:

Дважды кликните по ней и приложение будет запущено. При этом виртуальная клавиатура уже интегрирована в интерфейс программы, однако настроить управление с клавиатуры ПК тут нельзя.

Способ 3: Sjboy Emulator

Ещё один простой вариант для запуска JAR – это Sjboy Emulator. Главная его особенность заключается в возможности выбора скинов.

  1. Откройте контекстное меню JAR-файла.
  2. Наведите курсор на «Открыть с помощью».
  3. Выберите пункт «Open With SjBoy Emulator».

Клавиатура тут также интегрирована.

Итак, мы выяснили, что JAR можно открыть не только как обычный архив, но и запустить на компьютере через Java-эмулятор. В последнем случае удобнее всего использовать KEmulator, хотя и другие варианты тоже имеют свои преимущества, например, возможность изменять оформление окна.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Создание и использование архивов Java

Зачем нужны JAR-архивы?

Использование JAR-архивов предоставляет разработчикам аплетов (а также и автономных приложений) ряд преимуществ.

  • Повышение эффективности загрузки. Вместо нескольких файлов отдельных классов загружается единственный файл JAR-архива.
  • Улучшенное хранилище файлов, так как файлы классов хранятся в одном сжатом файле архива.
  • Повышение защищённости. В JAR-файл можно поместить цифровую подпись, дающею конечному пользователю гарантии, что файл архива не изменился с момента её внесения. Если конечный пользователь доверяет вашей фирме, он может предоставить подписанным вами аплетам право доступа к его жестким дискам или другим важным ресурсам системы.
  • Независимость от платформы. Построение JAR-архивов базируется на использовании популярной программы PKZIP сжатия файлов. Однако JAR-файлы могут создаваться и сохраняться на любой компьютерной платформе.
  • Расширяемость. В спецификацию JAR-файлов внесены некоторые дополнения, обеспечивающие возможность дальнейших расширений.

Одно только повышение эффективности загрузки даёт какое преимущество! Если вы знакомы с работой протокола HTTP, то должны понимать насколько неэффективно, с его помощью, выполнять передачу нескольких небольших файлов. В каждом случае потребуется установить новое соединение TCP/IP, которое после передачи данного файла будет разорвано. Установка каждого соединения связана с дополнительной нагрузкой на сервер и сеть. При использовании коммутируемых линий связи среднее время установки TCP/IP-соединения может составлять около 0,5 c. Если для работы аплета необходимо 16 файлов, общее время затрачиваемое только на установку соединений — 8 с.

Создание JAR-архива

Для создания и модификации JAR-архивов можно использовать любую поддерживающую формат PKZIP программу. JAR-файл отличается от zip-файла наличием дополнительного текстового файла, называемого файлом описания (manifest file). Этот файл содержит сведения обо всех помещённых в данный архив файлах. В состав файла описания должны входить определённые элементы, в частности он должен включать следующие.

  • Номер версии стандарта JAR. В соответствии, с которым построен данный архив. Этот номер задаётся параметром Manifest-Version и является обязательным. В SDK 1.2 значение этого параметра должно быть равно 1.0
  • Минимальный номер версии утилиты JAR, которая сможет прочитать этот архив. Этот параметр необязателен и имеет название Required-Version.
  • Отдельная запись для любого, помещённого в архив файла. Необязательно перечислять все помещённые в архив файлы, достаточно указать только файлы главных классов.

Фирма Sun предоставила, для создания JAR архивов, специализированный инструмент для всех поддерживаемых платформ. Рассмотрим создание JAR-архива с помощью этой утилиты под названием jar.

Предположим, что у нас имеется каталог, содержащий несколько файлов типа .class и подкаталог с именем images содержащий несколько файлов типа .gif. Пусть имя создаваемого архива будет archive.jar

Общий формат команды вызова утилиты jar: jar параметры имена_файлов

Параметр имена_файлов представляет собой список имён файлов, первым в котором всегда указывается имя самого архивного файла. Назначение остальных имён файлов зависит от ключей:

c — создать новый архив. m — использовать внешний файл описания, имя которого указано вторым в списке имена_файлов. M — не создавать файл описания. t — вывести содержание указанного архивного. x — извлечь файлы, указанные в списке имена_файлов. Если имена не указаны, то извлечь все файлы. f — указывает, что имя архивного файла помещено первым в списке имена_файлов. v — указывает, что утилита должна сопровождать сообщениями выполнение всех действий, заданных другими параметрами. 0 — сохранение файлов в архиве выполняется без их сжатия. u — указывает, что нужно обновить указанные файлы. Или в случае команды jar umf manifest имя_архива указывает что нужно обновить информацию в файле описания. -i — указывает, что необходимо сгенерировать файл INDEX.LIST содержащий информацию о всех файлах архива.

И так для создания нового архива введите:
jar cf archive.jar .class images/.gif

Помещение в JAR-архив цифровой подписи

Для того чтобы разобраться, как цифровая подпись помещается в JAR-архив, необходимо предварительно усвоить определённые базовые понятия из области криптографии -шифрование с помощью открытого ключа.

Для внесения цифровой подписи в JAR-архив необходимо иметь два инструмента.

  • Утилита keytool. Используется для генерации пары открытого и закрытого ключа и сертификата.
  • Утилита jarsigner. Используется для непосредственного помещения цифровой подписи в JAR-архивы с применением имеющегося сертификата.

Что нам понадобится:

  1. Выполнить генерацию пары ключей.
  2. Получить сертификат на эту пару.
  3. Использовать сертификат для помещения цифровой подписи в JAR-архив.

Генерация пары ключей

Для генерации новой пары ключей можно использовать следующею команду:
keytool -genkey -alias testkey


В результате выполнения этой команды будет создана новая пара ключей сохранённая в базе данных под именем testkey. Вот что у нас получится:

Программа keytool позволяет указывать следующие параметры:

-v — запрос вывода сообщений о действии программы. -alias псевдоним — псевдоним (имя) который присваивается этой паре. -keyalg алгоритм_ключа — алгоритм шифрования вашей подписи — обычно по умолчанию это алгоритм SHA1 with DSA и его можно не указывать если не собираетесь изменять его, размер ключа при генерации DSA ключевой пары может быть от 512 до 1024 бит, но если вы хотите применить MD5 with RSA то укажите опцию -keyalg «RSA» Следует заметить что опция -keyalg обуславливает и опцию -sigalg — алгоритм подписи который будет использован по умолчанию для подписания jar-файла (при создании дайджестов сообщений). -keysize длина_ключа — размер генерируемых ключей в битах. -keypass пароль — пароль для данного ключа. Если пароль не будет указан в командной строке, программа предложит ввести его значение в режиме диалога. Длина пароля должна быть не менее шести символов. -keystore хранилище — расположение хранилища ключей. -storepass пароль — пароль доступа к хранилищу ключей. -validity valDays — срок годности вашего сертификата. По умолчанию это 180 дней, можно указать больше или меньше.

По умолчанию утилита keytool помещает открытый ключ в подписанный вами же сертификат X.509.v1.

Командой keytool -list мы можем посмотреть содержимое keystore:

Получение сертификата

После генерации новой пары ключей необходимо выполнить генерацию запроса CSR (Certificate Signing Request). Этот запрос отсылается в любую выбранную службу сертификации.

Для генерации CSR запроса введите следующею команду:
keytool -certreq

Для нашей пары ключей testkey команда будет выглядеть следующим образом:
keytool -certreq -alias testkey

При генерации CSR запроса допускаются следующие параметры:

-v — сопровождение работы программы выдачей сообщений. -alias псевдоним — определение псевдонима пары ключей, для которых необходимо получить сертификат. По умолчанию применяется значение mekey. -sigalg алгоритм_сигнатуры — задание используемого алгоритма внесения подписи. -file csr_файл — имя и расположение файла, в котором помещается генерируемый запрос. -keypass пароль — пароль для доступа к данному ключу. -storepass пароль — пароль доступа к хранилищу ключей. -keystore хранилище — имя и расположения файла с парой ключей.

Сгенерированный CSR-запрос отсылается в выбранную службу сертификации. После проведения всех необходимых проверок и удостоверения вашей личности вам будет выдан требуемый сертификат.

В любом случае самостоятельно занесите полученный сертификат в файл и введите следующею команду:
keytool -import

Следующие параметры могут быть указаны в режиме import:

-v — сопровождение работы программы выдачей сообщений. -alias псевдоним — псевдоним полного имени, которое будет использоваться с данным сертификатом. -file файл-сертификата — имя и расположение файла, в котором сохранён полученный сертификат.

Команда:
keytool -export -alias testkey -file имя_файла
даст указание утилите скопировать ваш сертификат в указанный файл. Отправьте свой сертификат всем получателям, которые будут использовать подписанные вами JAR-архива.

Помещение в JAR-архив цифровой подписи с помощью утилиты jarsigner

Помимо помещения цифровой подписи в JAR-архивы утилита jarsigner способна также проверять целостность подписанных JAR-архивов. Для этого достаточно запустить её с параметром -verify/

Запретить просмотр содержимого Jar-файла архиватором

Я создаю приложения для компьютеров в среде программирования Eclipse.

Можно ли создать такой Jar-файл, в котором нельзя просмотреть содержимое с помощью архиватора?

2 ответа 2

Можно воспользоваться обфускацией. Она позволяет запутать код, есть опция переименования class’ов. Jar — нужен всего лишь для удобного распространения пакетов библиотек и приложений. Он не задумался как средство защиты файлов от чтения.

Один из свободных обфускаторов для Java — ProGuard. На Ru.SO есть вопрос про java обфускаторы.

Нет, нельзя. Jar — это простой ZIP-архив, с нестандартным расширением. Опции «запрета просмотра содержимого» этот формат не имеет.

Работа с Java в командной строке

От простого к .

Каждая программа обычно содержится в отдельном каталоге. Я придерживаюсь правила создавать в этом каталоге по крайней мере две папки: src и bin. В первой содержатся исходные коды, во второй — результат компиляции. В данных папках будет структура каталогов, зависящая от пакетов.

Один файл

Можно сделать и без лишних папок.
Берем сам файл HelloWorld.java.
Переходим в каталог, где лежит данный файл, и выполняем команды.
В данной папке появится файл HelloWorld.class. Значит программа скомпилирована. Чтобы запустить

Отделяем бинарные файлы от исходников

Теперь сделаем тоже самое, но с каталогами. Создадим каталог HelloWorld и в нем две папки src и bin.
Компилируем
Здесь мы указали, что бинарные файлы будут сохраняться в отдельную папку bin и не путаться с исходниками.

Используем пакеты

А то, вдруг, программа перестанет быть просто HelloWorld-ом. Пакетам лучше давать понятное и уникальное имя. Это позволит добавить данную программу в другой проект без конфликта имен. Прочитав некоторые статьи, можно подумать, что для имени пакета обязательно нужен домен. Это не так. Домены — это удобный способ добиться уникальности. Если своего домена нет, воспользуйтесь аккаунтом на сайте (например, ru.habrahabr.mylogin). Он будет уникальным. Учтите, что имена пакетов должны быть в нижнем регистре. И избегайте использования спецсимволов. Проблемы возникают из-за разных платформ и файловых систем.

Поместим наш класс в пакет с именем com.qwertovsky.helloworld. Для этого добавим в начало файла строчку
В каталоге src создадим дополнительные каталоги, чтобы путь к файлу выглядел так: src/com/qwertovsky/helloworld/HelloWorld.java.
Компилируем
В каталоге bin автоматически создастся структура каталогов как и в src.

Если в программе несколько файлов

HelloWorld.java
Calculator.java
Adder.java

Ошибка возникла из-за того, что для компиляции нужны файлы с исходными кодами классов, которые используются (класс Calculator). Надо указать компилятору каталог с файлами с помощью ключа -sourcepath.
Компилируем

Если удивляет результат

Есть возможность запустить отладчик. Для этого существует jdb.
Сначала компилируем с ключом -g, чтобы у отладчика была информация.

Отладчик запускает свой внутренний терминал для ввода команд. Справку по последним можно вывести с помощью команды help.
Указываем точку прерывания на 9 строке в классе Calculator

Запускаем на выполнение.

Чтобы соориентироваться можно вывести кусок исходного кода, где в данный момент находится курссор.

Узнаем, что из себя представляет переменная а.

Выполним код в текущей строке и увидим, что sum стала равняться 2.

Поднимемся из класса Adder в вызвавший его класс Calculator.

Удаляем точку прерывания

Можно избежать захода в методы, используя команду next.

Проверяем значение выражения и завершаем выполнение.

Хорошо бы протестировать

Запускаем. В качестве разделителя нескольких путей в classpath в Windows используется ‘;’, в Linux — ‘:’. В консоли Cygwin не работают оба разделителя. Возможно, должен работать ‘;’, но он воспринимается как разделитель команд.

Создадим библиотеку

Класс Calculator оказался полезным и может быть использован во многих проектах. Перенесем всё, что касается класса Calculator в отдельный проект.

Измените также назавания пакетов в исходных текстах. В HelloWorld.java нужно будет добавить строку

Делаем архив jar

С помощью ключа -C мы запустили программу в каталоге bin.

Надо узнать, что у библиотеки внутри

Можно распаковать архив zip-распаковщиком и посмотреть, какие классы есть в библиотеке.
Информацию о любом классе можно получить с помощью дизассемблера javap.

Из результата видно, что класс содержит кроме пустого конструктора, ещё один метод sum, внутри которого в цикле вызывается метод add класса Adder. По завершении метода sum, вызывается Adder.getSum().
Без ключа -c программа выдаст только список переменных и методов (если использовать -private, то всех).

Лучше снабдить библиотеку документацией

Изменим для этого класс калькулятора.

Документацию можно создать следующей командой. При ошибке программа выдаст список возможных опций.

В результате получиться следующее

Можно подписать jar-архив

Если требуется подписать свою библиотеку цифровой подписью, на помощь придут keytool и jarsigner.
Генерируем подпись.

Генерируем Certificate Signing Request (CSR)

Содержимое полученного файла отправляем в центр сертификации. От центра сертификации получаем сертификат. Сохраняем его в файле (например, qwertokey.cer) и импортируем в хранилище

Файл qwertokey.cer отправляем всем, кто хочет проверить архив. Проверяется он так

Использование библиотеки


Есть программа HelloWorld, которая использует библиотечный класс Calculator. Чтобы скомпилировать и запустить программу, нужно присоединить библиотеку.
Компилируем

Собираем программу

Это можно сделать по-разному.

Первый способ

Здесь есть тонкости.
В строке

не должно быть пробелов в конце.
Вторая тонкость описана в [3]: в этой же строке должен стоять перенос на следующую строку. Это если манифест помещается в архив сторонним архиватором.
Программа jar не включит в манифест последнюю строку из манифеста, если в конце не стоит перенос строки.
Ещё момент: в манифесте не должно быть пустых строк между строками. Будет выдана ошибка «java.io.IOException: invalid manifest format».

При использовании команды echo надо следить только за пробелом в конце строки с main-class.

Второй способ

В данном способе избегаем ошибки с пробелом в main-class.

Третий способ

Включили код нужной библиотеки в исполняемый файл.

Запуск исполняемого jar-файла

Файл calculator.jar исполняемым не является. А вот helloworld.jar можно запустить.
Если архив был создан первыми двумя способами, то рядом с ним в одном каталоге должна находится папка lib с файлом calculator.jar. Такие ограничения из-за того, что в манифесте в class-path указан путь относительно исполняемого файла.

При использовании третьего способа нужные библиотеки включаются в исполняемый файл. Держать рядом нужные библиотеки не требуется. Запускается аналогично.

Как быть с приложениями JavaEE

Аналогично. Только библиотеки для компиляции нужно брать у сервера приложений, который используется. Если я использую JBoss, то для компиляции сервлета мне нужно будет выполнить примерно следующее

Структура архива JavaEE-приложения должна соответствовать определенному формату. Например

Способы запуска приложения на самом сервере с помощью командной строки для каждого сервера различны.

Надеюсь, данная статья станет для кого-нибудь шпаргалкой для работы с Java в командной строке. Данные навыки помогут понять содержание и смысл Ant-скриптов и ответить на собеседовании на более каверзные вопросы, чем «Какая IDE Вам больше нравится?».

JAR (формат файла) — JAR (file format)

Java Archive
Имя файла расширения .jar
Интернет-тип носителя application/java-archive
Равномерное идентификатор типа (ИМП) com.sun.java-архив
Разработан Netscape , Sun Microsystems , Oracle Corporation
Тип формата Файловый архив , сжатие данных
Расширенные от ZIP

JAR ( J AVA AR — резанец) представляет собой пакет формат обычно используется для объединения многих файлов классов Java и связанных с ними метаданных и ресурсов (текст, изображения и т.д.) в один файл для распределения.

JAR — файлы являются архивными файлами , которые включают в себя Java-специфический файл манифеста . Они построены на формате ZIP и обычно имеют .jar расширение файла .

содержание

дизайн

Файл JAR позволяет Java автономной работы эффективно развертывать все приложение, включая его классов и связанных с ними ресурсов, в одном запросе. Элементы JAR файл может быть сжат, сокращая время загрузки.

Файл JAR может содержать файл манифеста, который находится в META-INF/MANIFEST.MF . Записи в файле манифеста описывается , как использовать файл JAR. Например, Classpath запись может быть использована , чтобы указать другие файлы JAR для загрузки с JAR.

экстракция

Содержание файла JAR может быть извлечен с использованием любого стандартного программного обеспечения декомпрессии, или jar утилита командной строки: « jar -xf foo.jar ».

Безопасность

Разработчики могут поставить цифровую подпись JAR — файлы. В этом случае информация подписи становится частью встроенного файла манифеста. Сам JAR не подписан, но вместо того, чтобы каждый файл внутри архива указан вместе с контрольной суммой; именно эти контрольные суммы, которые подписаны. Несколько лиц могут подписать файл JAR, изменив JAR файл непосредственно с каждым подписанием, хотя сами подписанные файлы остаются в силе. Когда среда выполнения загружает Java подписали JAR — файлы, можно проверить подписи и отказываются загружать классы , которые не соответствуют подписи. Он может также поддерживать «запечатанные» пакеты, в которых Загрузчик классов только разрешающие классы Java , которые будут загружены в тот же пакет , если все они подписаны одними и теми же лицами. Это предотвращает попадание вредоносного кода из вставки в существующий пакет, и таким образом получить доступ к пакету в области видимости классов и данных.

Содержание JAR — файлов может быть запутанным , чтобы сделать обратный инжиниринг сложнее.

Исполняемые файлы JAR

Исполняемая программа Java может быть упакована в файл JAR, вместе с любыми библиотеками программа использует. Исполняемые JAR — файлы имеют манифест с указанием точек входа класса с Main-Class: myPrograms.MyClass и явным Class-Path (и -cp аргумент игнорируется). Некоторые операционные системы могут работать с этим непосредственно при нажатии. Типичный вызов является java -jar foo.jar из командной строки.

Родные пусковые установки могут быть созданы на большинстве платформ. Например, Microsoft Windows , пользователи , которые предпочитают иметь для Windows EXE — файлы могут использовать такие инструменты, как JSmooth , Launch4J, WinRun4J или Nullsoft Scriptable Установка системы обернуть отдельные файлы JAR в исполняемые файлы.

манифест

Файл манифеста это метаданные файл , содержащийся в JAR. Он определяет расширение и данные пакета связанных. Он содержит пары имя-значение , организованных в разделах. Если файл JAR предназначен для использования в качестве исполняемого файла, файл манифеста указывает главный класс приложения. Файл манифеста называется MANIFEST.MF . Явное каталог должно быть первым входом сжатого архива.

Характеристики

Манифест появляется в каноническом месте META-INF/MANIFEST.MF . Там может быть только один файл манифеста в архиве , и он должен быть в этом месте.

Содержание файла манифеста в файле JAR , созданный с версией 1.0 комплекта Java Development Kit состоит в следующем.

Имя отделяется от его значения двоеточием. по умолчанию манифест показывает, что она соответствует версии 1.0 манифеста спецификации.

Манифест может содержать информацию о других файлах, которые упакованы в архиве. Manifest содержание зависит от предполагаемого использования для файла JAR. Файл манифеста по умолчанию не делает никаких предположений о том, какую информацию следует записывать о других файлах, поэтому его единственная строка содержит данные только о себе.

Специального назначения Manifest Заголовки

JAR — файлы , созданные только с целью архивирования не использовать MANIFEST.MF файл.

Большинство использования JAR-файлы выходит за рамки простого архивирования и сжатия и требует специальной информации в файле манифеста.

Приложения

Если приложение содержится в файле JAR, то Java Virtual Machine должен знать точку входа приложения. Точка входа любого класса с public static void main(String[] args) методом. Эта информация предоставляется в Main-Class заголовок, который имеет общий вид:

В этом примере com.example.MyClassName.main() выполняется при запуске приложения.

Запечатывание пакета

По желанию, пакет в файле JAR может быть запечатаны, это означает, что все классы, определенные в пакете находятся в архиве в том же файле JAR. Пакет может быть запечатан для обеспечения целостности версий классов в программном обеспечении или в качестве меры безопасности.

Для того, чтобы запечатать пакет, запись Имя должно появиться, а затем герметичным заголовок, например:

Значение имени заголовка является относительным путем к файлу пакета. Обратите внимание , что она заканчивается с «/» , чтобы отличить его от имени файла. Любые заголовки , следующие за заголовком Name, без каких — либо промежуточных пустых строк, применяются к файлу или пакету , указанному в заголовке Name. В приведенном выше примере, поскольку Sealed заголовок происходит после Name: myCompany/myPackage заголовка без каких — либо промежуточных пустых строк, то Sealed заголовок применяется (только) к пакету myCompany/myPackage .

Пакет Versioning

Несколько манифеста заголовки держат информацию о версии. Один набор заголовков может быть назначен каждому пакету. Заголовки версионности появляются непосредственно под заголовком Имя пакета. Этот пример показывает все заголовки контроля версий:

зависимости

MANIFEST.MF Файл может быть использован для определения всех классов , которые должны быть загружены в приложение , чтобы иметь возможность работать.

Обратите внимание, что класс-Path записи разделяются пробелами, а не с системой разделителя пути:

Apache Ant Zip поддержки / JAR

Apache Ant построить инструмент имеет свой собственный пакет для чтения и записи Zip и JAR архивы, включая поддержку Unix файловых расширений. Пакет org.apache.tools.zip выпущен под Apache Software Foundation , лицензии и предназначен , чтобы быть полезной вне Ant.

Связанные форматы

Несколько связанных форматы файлов основываются на формате JAR:

Как открыть файл jar на компьютере?

Digital

Содержание

С помощью jar файлов осуществляется архивирование и распаковка. Одной из важных их особенностей является способность к сжатию, исключающая потери. Формат .jar обеспечивает эффективную сортировку и отправку документов. Прежде чем узнать, как открыть файл jar на компьютере, необходимо выполнить его установку и активацию, чтобы он стал исполняемым.

Своим именем jar формат обязан Java ARchive, от которого он происходит. Основным назначением его является разработка и распространение дополнений, предназначенных для программ, созданных компанией Mozilla.

Как открыть файл jar на компьютере?

Открыть файл jar на компьютере можно легко и быстро, щелкнув два раза по нему мышью, после чего произойдет выбор системой Windows необходимой программы, позволяющей справиться с задачей.

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

В случае открытия файла jar в неверной программе требуется изменение настроек. Для этого необходимо, чтобы документ содержал файл MANIFEST.MF в каталоге META-INF с указанием главного класса программы, включающий метод main.

Для просмотра содержимого jar архива можно использовать любой архиватор со сжатием ZIP. Запуск такого файла можно осуществить, используя эмулятор Java-приложений MidpX. Еще один способ – метод его конвертирования в формат .EXE программой JAR2EXE Converter.


Возможности приложений

Перед тем, как приступать к использованию jar файла, необходимо выполнить его открытие, используя совместимое приложение, которое можно выбрать из следующего списка:

Широкое применение находят на практике дополнения, предназначенные для работы с браузером Firefox. Они обеспечивают значительное расширение функциональных возможностей браузера и его настройку с учетом личных потребностей, которые определяет для себя каждый пользователь.

Например, с помощью дополнений можно:

  • производить закачку видео, представленных на популярных видеохостингах
  • удалять рекламные материалы с веб-страниц
  • осуществлять управление работой браузера, используя жесты и т.д.

Приложение-календарь Mozilla Sunbird может расширять свои возможности при использовании дополнений. Это приложение предназначено для составления расписания дня и создания задач, назначением которых является оповещение в специально установленное время.

Thunderbird – это отличный помощник, обеспечивающий просмотр почтовых уведомлений, создание новых писем, фильтрование спама, обратное отправление почты и др. Дополнения способствуют лучшей совместимости Thunderbird с инструментами от Microsoft, обеспечивают более удобную работу с контактами, подписями для писем и др.

Зная полезную информацию, можно приступать к работе с jar файлом на компьютере.

Архиваторы под рентгеном

Содержание статьи

Полную версию статьи ты можешь
прочитать в декабрьском
номере «Хакера»

За окном тихая темная ночь, и только слабый шум кулера нарушает спокойствие. Ты бросаешь свой взгляд на часы в трее и понимаешь, что скоро утро, и что снова вся ночь прошла в попытках взломать сайт какой-то конторы. Вдруг курсор твоей мыши замирает возле файла topsecret.rar. Двойной щелчок по имени этого файла, и. перед тобой — стандартное окно с предложением ввести пароль. Еще не до конца осознав, что произошло, ты нервно стучишь по клаве: qwerty, 123, asdf, sex, но, кроме сообщения о невозможности извлечения файлов, ничего не видишь. Давай попробуем разобраться, как заполучить заветные файлы TopSecret-архива. Если ты внимательный читатель, то помнишь, что уже была статья, описывающая проги для взлома архивов. Мы рассмотрим этот вопрос в немного другом ракурсе.

О методах шифрования, применяемых в архиваторах

Сегодня существует довольно много различных алгоритмов криптографической защиты информации. Из числа наиболее современных можно выделить 3DES, IDEA, Blowfish, Cast-128 и некоторые из AES, включая новый AES Rijndael наряду с ZIP-сжатием. А если говорить о методах шифрования, реализованных в программах-архиваторах, то здесь выбор более ограничен. В подавляющем большинстве случаев в популярных архиваторах реализован какой-нибудь один метод. Чаще всего ZIP-кодирование или AES Rijndael. Исключение составляет PowerArchiver, в котором пользователю предоставляется целых 5 вариантов кодирования сжатых данных: Blowfish (128 бит), DES (64 бит), Triple DES (128 бит), Rijndael AES (128 бит) и обычное ZIP-шифрование. Следует признать, что стандартное ZIP-кодирование не относится сегодня к числу надежных, равно как и шифрование с применением алгоритма DES (Data Encryption Standard). Последний в течение почти 20 лет оставался федеральным стандартом шифрования, как наиболее надежный являлся наиболее часто используемым алгоритмом симметричного блочного шифрования, и применялся многими структурами, в том числе банками и службами обращения финансов. Однако сегодня вычислительные мощности значительно возросли, и уже не составит большого труда перебрать все возможные варианты ключей, ведь длина ключа в DES — всего 8 байт. Малый размер ключа и низкая скорость шифрования — факторы, которые позволяют быстро взломать этот шифр при наличии мощного компа.

Начиная с середины 90-х годов стали появляться кандидаты на замену DES, наиболее известные из которых — Triple DES, IDEA и Blowfish. Первый и последний применяются и сегодня в разных программных средствах для шифрования данных, в том числе в архиваторах. А IDEA используется PGP и рядом других криптографических программ. Triple DES («тройной DES», так как трижды шифрует информацию «обычным» алгоритмом DES) свободен от основного недостатка прежнего варианта — короткого ключа. Здесь ключ в 2 раза длиннее, и потому надежность «тройного» DES намного выше. Но Triple DES унаследовал и слабые стороны своего предшественника — отсутствие возможностей для параллельных вычислений при шифровании и низкую скорость.

Современный 64-битный блочный шифр Blowfish с ключом переменной длины от 32 до 48 бит в настоящее время считается достаточно сильным алгоритмом. Он был разработан в 1993 году в качестве замены уже существующих алгоритмов и является намного более быстрым, чем DES, Triple DES и IDEA.

Однако наиболее надежным сегодня признается Rijndael — новый стандарт шифрования AES. Он имеет 3 размера ключа: 128, 192 и 256 бит и обладает массой достоинств. К их числу относятся высокая скорость шифрования, минимальные требования к вычислительным ресурсам, устойчивость ко всем известным атакам и легкая расширяемость (при необходимости можно увеличить размер блока или ключа шифрования). Более того, в ближайшем будущем AES Rijndael останется самым надежным методом, поскольку если даже предположить, что появится компьютер, способный проверить 255 ключей в секунду, то потребуется приблизительно 149 триллионов лет, чтобы определить 128-битный ключ
AES!

Шифрование в ZIP-архивах

До боли знакомое многим
окно с требованием
ввести пароль

Напомню, что формат ZIP считается мировым стандартом архивирования и обладает самой длинной историей, а архиватор WinZip стал самым скачиваемым продуктом. О его популярности свидетельствует и тот факт, что большинство архивов в интернете имеют формат ZIP. Возможности WinZip достаточно широки для того, чтобы обеспечить надежное и эффективное архивирование данных. WinZip ориентирован преимущественно на ZIP-архивы, но при этом поддерживает и популярные архивные форматы TAR, GZIP, UUencode, XXencode, BinHex, MIME, ARJ, LZH и ARC. В то же время существенным недостатком программы можно считать тот факт, что WinZip не работает с широко используемыми архивными форматами, к примеру с RAR, ACE и JAR.

Но вернемся к теме шифрования данных в WinZIP. Долгое время возможность парольной защиты в этом архиваторе была скорее маркетинговым ходом, нежели действительно полезной функцией. В интернете существовало огромное количество прог, позволяющих подобрать пароль к таким архивам за считанные часы, если не минуты. Ситуация изменилась лишь недавно, с выходом последней, девятой версии архиватора. Тогда в WinZip появилась поддержка 128- и 256-битного шифрования по алгоритму Rijndael. Процедура кодирования осталась столь же простой, что и раньше: требуется только выбрать степень шифрования и дважды ввести пароль. Другое дело, что многие юзеры по-прежнему работают со старыми версиями программы и до сих пор питают иллюзии по поводу защищенности своих архивов. Остановимся на этом подробнее.

Взлом ZIP-архивов

Итак, чтобы взломать ZIP-архив, созданный ранней версией WinZip, особых усилий не требуется. При наличии среднестатистического компа скорость перебора паролей достигает несколько миллионов в секунду. И если пароль на архив ставил простой смертный, то при таких темпах перебора подобрать его удается быстро. Уверен, что многим не раз уже приходилось заниматься подобного рода перебором, и никаких вопросов тут возникнуть не должно. А что если не хочется или нет времени тупо перебирать миллионы возможных комбинаций символов? К нашей радости, есть и другой способ. Стоит упомянуть известную многим программу Advanced Archive Password Recovery от фирмы «Элкомсофт», предназначенную для подбора паролей ко многим типам архивов. Ей поддерживаются такие типы атак:

  1. банальный перебор паролей;
  2. перебор паролей по маске;
  3. перебор паролей по словарю;
  4. plaintext-атака;
  5. гарантированная расшифровка WinZip;
  6. пароль из ключей.

Мы подробнее остановимся на plaintext, гарантированной расшифровке WinZip и пароле из ключей.

Итак, что же это за атака такая — plaintext? Как известно, ZIP-файлы шифруются по довольно сильному алгоритму: пароль на архив не сохраняется внутри этого самого архива, а конвертируется в 32-битный ключ, который и используется для шифрования архива. Но этот алгоритм не такой крутой, как, например, DES, RSA, IDEA и т.д. Один из способов взлома защиты ZIP-файлов предполагает использование архива с точной копией одного из файлов зашифрованного архива, сделанного тем же архиватором и с той же степенью компрессии. Он не должен быть меньше 12 байт. Атака происходит в 2 этапа: отброс заведомо неподходящих ключей, а после — поиск подходящих. На первой фазе работы, которая занимает от одной до трех минут (это зависит от размера архива с одним файлом и количества твоей оперативки), оставшееся время не может быть вычислено, так что большую часть времени процесс-индикатор держится на нуле. К счастью, этот тип атаки не настолько долог, как простой перебор всех возможных паролей, что позволяет использовать его для более быстрого вскрытия паролей на ZIP- и GZIP-архивы. Минусом атаки этого типа является то, что нужно иметь незашифрованный файл идентичный зашифрованному, что редко бывает осуществимо.

Рабочее окно
Advanced Archive
Password Recovery

Теперь поговорим о гарантированной расшифровке WinZip. Эта атака схожа с предыдущей, однако не требует наличия никаких дополнительных архивов с файлами. В самом же запароленном архиве должно быть как минимум 5 файлов. Атака работает с архивами, созданными при помощи WinZip не выше версии 8.0 включительно, а также с другими архиваторами на основе исходников Info-ZIP. Если архив имеет меньше пяти файлов, программа выдаст сообщение об ошибке. Атака состоит из трёх этапов: первые 2 ищут подходящие ключи, а последний на основе этих ключей генерирует пароль (не более 10 символов). Первая часть атаки обычно длится несколько минут (прога может показывать оставшееся время как несколько часов, но это теоретический максимум), вторая — около получаса (тут тоже не стоит обращать внимания на предсказания программы), а последняя – 2-3 минуты. Атака работает с большинством ZIP-архивов, и даже если пароль достаточно длинен и не был найден на последней стадии атаки, программа сможет расшифровать архив, просто снимая парольную защиту. Этот тип атаки базируется на плохом генераторе случайных чисел, который использовался в WinZip до версии 8.1. Однако даже версии WinZip ниже 8.1 в 0,4% случаях генерируют «нормальные» архивы, которые не могут быть взломаны таким образом. В подобном случае программа покажет предупреждение, которое означает, что на первой стадии атаки не будет найдено ни одного ключа.

И, наконец, о пароле из ключей. Если ты внимательно читал статью, то заметил, что описанные выше методы атаки сначала пытаются найти ключи шифрования для запароленных архивов и расшифровывают сам архив, если не было найдено ни одного пароля. Однако использоваться они могут только для архивов с паролями длинной менее 10 символов. Для архивов с более длинными паролями существует специальный тип атаки. Если у тебя есть ключи шифрования для запароленного архива, и ты хочешь найти этот длинный пароль, выбери «Пароль из ключей» в качестве атаки и введи эти ключи на закладке Plaintext. Обычно эта атака используется, чтобы узнать пароль на архив длинной 14-15 символов. Лучше всего в свойствах атаки установить её начало с седьмого символа пароля, так как его начало может быть восстановлено из «хвоста». Вводя позицию для старта, стоит помнить, что в любом случае атака начинается с конца пароля. Об этом можно говорить часами, но нам давно пора оставить в покое ZIP-архивы и посмотреть, какие сюрпризы приготовили нам другие архиваторы.

Взлом RAR-архивов версии 3.X

Вот и дошла очередь до защищенного паролем файла topsecret.rar, о котором шла речь в начале статьи. Сказать честно, тут перспективы не такие радужные, как в случае с ZIP-архивами. Говорят, что программеры из «Элкомсофта» потратили немало времени в поисках уязвимостей шифрования в WinRar. К сожалению, результатов эта работа не принесла. Как и в других архивах, защита информации от несанкционированного доступа осуществляется в WinRar в первую очередь за счет шифрования данных. Пароль можно установить как по умолчанию (в этом случае архивирование с паролем будет продолжаться до его отмены), так и непосредственно в процессе архивирования в случае однократного применения.

При необходимости шифрования имен файлов требуется дополнительное включение соответствующей опции в диалоге задания пароля. Зашифрованный в таком режиме архив без пароля невозможно распаковать. Нельзя даже просмотреть список находящихся в нем файлов.

Как уже говорилось выше, в формате ZIP применяется собственный алгоритм шифрования, который в целом считается менее надежным, чем AES-128, используемый в RAR. Помимо парольной защиты, в среде Windows NT/2000/XP допустимо сохранение данных о правах доступа (данных о владельце, группе, возможностях и аудит-информацию). Естественно, что это реально только при наличии у пользователя достаточных полномочий. Сохранение этой информации может сделать невозможным обращение других лиц к файлам после распаковки (это зависит от файловой системы и собственно прав доступа), но замедляет процесс архивирования/разархивирования.

Итак, как ты уже понял, единственный способ взлома запароленного RAR-архива — банальный брутфорс. К сожалению, в связи с используемым в WinRar методом шифрования скорость перебора паролей не превышает 20
в секунду, даже на P4 3,8 Ghz и 1 Gb DDRII памяти :(. Остается запастись словарем для перебора и надеяться, что юзер использовал простой и/или короткий пароль.

Использование сети для брутфорса RAR-архивов

Архивирование с паролем в WinRar

Для ускорения процесса перебора паролей можно использовать не один комп, а целую сеть. Понятное дело, чем большим количеством компов ты располагаешь, тем быстрее получишь заветный пароль. Однако не спеши сразу напрягать всю сеть. Лучше вспомни математику и попытайся посчитать, сколько времени займет брутфорс. К примеру, тебе известно, что некто в качестве пароля к RAR-архиву использовал слово из семи маленьких латинских букв (всего их 26). Отсюда следует, что пароль может состоять из 8031810176
(26*7) всевозможных комбинаций. Проверяя по 20 паролей в секунду, верный будет найден через приблизительно 12,7 года (8031810176/20/3600/24/365)! Сомневаюсь, что кто-то попытается проделать подобное на практике :). Ситуация кардинально изменится, если использовать целую сеть, скажем, из 80 компов. Несложно посчитать, что в этом случае все комбинации будут проверены за 0,16 года, что составляет примерно 58 дней.

Вероятно, у тебя возник вопрос, а как же организовать этот самый перебор по сети. Рассмотрим это на примере проги Advanced Archive Password
Recovery. К сожалению, в ней нет специализированных возможностей для брутфорса по сети, но зато есть функция указания набора символов и длины пароля для перебора. Установив прогу на каждый комп в сети и манипулируя этими параметрами, мы задаем диапазон для перебора. А чтобы не бегать к каждой машине сети лично, можно воспользоваться специализированным софтом.

Краткие выводы

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

  1. применяй архиваторы с самым надежным методом шифрования AES Rijndael с 128-битным ключом: WinRar, PowerArchiver или UltimateZip;
  2. старайся выбирать форматы, не поддерживаемые программами восстановления паролей, например RAR версий 3.0 и выше, TAR, JAR и др.;
  3. задавай длинные (не менее восьми символов) пароли; с этой позиции подходят любые из перечисленных архиваторов, так как в каждом из них допустимая длина пароля превышает 56 символов, что вполне достаточно;
  4. останавливай выбор на нетривиальных паролях; используй в пароле пробелы и комбинации цифр, символов и букв, чтобы в итоге получалась не фраза из реальных слов, а абракадабра, — так пароль невозможно будет подобрать по словарю.

Особенности работы с ZIP- объектами

Платформа 1С:Предприятие предоставляет возможности работы с ZIP архивами. Для этого в системе существуют объекты Запись ZIP Файла , ответственный за запись, и Чтение ZIP Файла , соответственно ответственный за чтение архивов.

Создание ZIP- архивов

Для того чтобы записать файлы в ZIP -архив необходимо выполнить несколько простых действий:

  • Создать архив с необходимыми параметрами, в который будут помещаться файлы.
  • Поместить в архив необходимые файлы.
  • Записать архив.

Рассмотрим эти действия подробнее.

Создание объекта Запись ZIP Файла можно осуществить двумя путями — создать инициализированный объект или создав неинициализированный объект вызвать у него метод Открыть . В обоих случаях состав параметров является одинаковым. В самом простом случае требуется указать только имя файла, куда будет записан архив.

Для создания нового архива требуется указать:

  1. Имя файла, куда будет записан архив. Этот параметр является обязательным. Если такой файл уже существует на диске, он будет перезаписан!
  2. Пароль доступа к архиву. Если этот параметр пропущен или равен пустой строке, то шифрование производится не будет!
  3. Комментарий к архиву.
  4. Метод сжатия файлов в архиве. На выбор предоставляется возможность скопировать файлы в архив без сжатия или сжать их. По умолчанию файлы сжимаются.
  5. Уровень сжатия файлов в архиве. Можно выбирать между минимальным, оптимальным и максимальным сжатием. По умолчанию используется оптимальное сжатие
  6. Метод шифрования. Можно защитить архив методом шифрования ZIP 2.0 , совместимым с большинством программ, или с помощью шифрования на основе новейшего стандарта AES с различной длиной ключа (128, 192 и 256 бит). Однако следует помнить , что данный метод может быть не совместим с некоторыми программами архивирования, например WinRAR .

После создания объекта необходимо добавить в него необходимые файлы, воспользовавшись методом Добавить . Он принимает на вход 3 параметра:

  1. Полное имя файла или маску.
  2. Режим сохранения путей к файлу. Можно сохранять полные пути, не сохранять пути совсем или сохранять пути относительно каталога.
  3. Режим обработки подкаталогов. Можно обрабатывать подкаталоги рекурсивно или не обрабатывать их. Параметр имеет смысл, если в качестве имени указана маска.

После того, как все необходимые файлы добавлены, можно записать архив на диск, воспользовавшись методом Записать() .

Важно понимать , что до выполнения этого метода, никаких реальных действий по созданию архива не происходит. После записи архива на диск объект закрывает его и для работы со следующим архивом необходимо выполнить метод Открыть() .

Особенности упаковки файлов по маске

Остановимся подробнее на особенностях упаковки файлов по маске.

Предположим, что у нас есть следующий файлы, которые нам необходимо поместить в архив:

Пример 1

Мы хотим создать в архив с помощью нижеследующих команд:

В результирующий архив будут помещены следующие файлы:

Пример 2

Мы хотим создать в архив с помощью нижеследующих команд:

В результирующий архив будут помещены следующие файлы:

Пример 3

Мы хотим создать в архив с помощью нижеследующих команд:


В результирующий архив будут помещены следующие файлы:

Чтение ZIP- архивов

Для того чтобы прочитать файлы из ZIP -архива необходимо выполнить несколько простых действий:

  • Открыть необходимый архив
  • Распаковать файлы

Рассмотрим эти действия подробнее.

Создание объекта Чтение ZIP Файла можно осуществить двумя путями — создать инициализированный объект или создав неинициализированный объект вызвать у него метод Открыть() . В обоих случаях состав параметров является одинаковым. В самом простом случае требуется указать только имя архивного файла, с которым необходимо работать.

Для открытия архива требуется указать:

  1. Имя файла, который требуется открыть. Этот параметр является обязательным.
  2. Пароль доступа к архиву.

После того, как архив успешно открыт, можно получить информацию о файлах, хранящихся внутри него. Для этого у объекта Чтение ZIP Файла предусмотрено свойство Элементы , которое предоставляет доступ к коллекции элементов ZIP файла.

Для каждого элемента можно получить разнообразную информацию о его имени, времени его модификации, его атрибутах, а также узнать является ли данный элемент зашифрованным.

После получения информации о элементах их можно распаковать на диск. Это возможно сделать двумя методами:

  • Воспользоваться методом ИзвлечьВсе() .
  • Воспользоваться методом Извлечь() .

Метод ИзвлечьВсе() распаковывает все файлы в архиву по указанному пути. Второй параметр данного метода определяет возможность восстановления исходных путей файлов.

Метод Извлечь() распаковывает указанный элемент коллекции из свойства Элементы по указанному пути. Второй параметр данного метода аналогичен тому же параметру метода ИзвлечьВсе() . Наибольший интерес представляет третий параметр данного метода — Пароль . В нем можно указать индивидуальный пароль для элемента архива, в случае если он зашифрован паролем отличным от других файлов.

После того, как архив нам больше не нужен можно завершить работу с ним вызвав метод Закрыть() .

Дополнительные возможности

При работе с большими объемами данных могут возникнуть проблемы при пересылке архивных файлов. Типичной такой ситуацией является ограничение некоторых почтовых серверов на размер сообщения — если письмо превышает некий заранее установленный размер, оно отбрасывается сервером. Применительно к 1С:Предприятию такая ситуация может возникнуть при пересылке больших сообщений обмена данными.

Для решения этих проблем можно использовать функции РазделитьФайл() и ОбъединитьФайлы() .

Функция РазделитьФайл() предназначена для разбиения файла на несколько частей указанного размера. Функция ОбъединитьФайлы() объединяет несколько файлов в один.

Более подробную информацию о этих функциях можно получить в документации.

Библиотека примеров приложений Java

Оглавление
Выбор файлов
Простейший редактор текста
Копирование файлов UNICODE
Сохранение объекта Java в файле
Произвольные классы и файлы
Буферизация потоков
Разбор конфигура-
ционного файла

Работа с консолью
Работа с классом PrintWriter
Разбор строк класса String
Загрузка и просмотр изображений
Потоки в оперативной памяти
Конвейерные потоки
Комбинирование двух потоков
Комбинирование нескольких потоков
Поиск слова в текстовом файле
Произвольный доступ к файлу
Информация о файле
Работа с каталогами
Просмотр содержимого каталога
Просмотр каталога с фильтром
Панель для выбора каталога
Список системных свойств
Сохранение списка системных свойств
Контрольная сумма файла
Копирование, переименование, удаление файлов
Архивы ZIP
Создание архива ZIP
Распаковка архива ZIP
Обход дерева каталогов

7.27. Работа с архивами формата ZIP

Показана методика просмотра содержимого архивных файлов формата ZIP, а также способ извлечения из такого архива отдельных файлов. Пример демонстрирует использование классов ZipFile и ZipEntry.

Немного теории

Среди различных библиотек классов Java есть одна очень интересная — с названием java.util.zip. Она позволяет работать с библиотеками файлов широко распространенных форматов ZIP и GZIP.

Применяя соответствующие классы, вы сможете разрабатывать приложения, способные создавать библиотеки архивных файлов, просматривать их содержимое, извлекать из библиотек отдельные или все файлы.

В этом разделе мы рассмотрим способы извлечения отдельных файлов из библиотеки формата ZIP и получения подробной информации о хранящихся там файлах.

Чтобы получить доступ к таким файлам, вы должны прежде всего создать объект класса ZipFile, пользуясь одним из конструкторов этого класса. Первый конструктор позволяет открыть ZIP-файл через объект класса File, а второй — через полный путь к имени файла:

В процессе создания объекта класса ZipFile могут возникать как обычные для файлов исключения IOException, так и исключения класса ZipException, специфические для класса ZipFile.

Класс ZipFile

В классе ZipFile определены несколько методов:

Метод Описание
entries Возвращает перечисление объектов, хранящихся в архивной библиотеке формата ZIP
getName Возвращает имя ZIP-файла
getInputStream Возвращает ссылку на входной поток для чтения объектов их архива
getEntry Возвращает объект, хранящийся в библиотеке, по его имени
close Закрывает ZIP-файл

Методы entries и getEntry позволяют получить элементы, хранящиеся в архиве, как объекты класса ZipEntry. Ниже мы получаем перечисление таких объектов:

Чтобы извлечь элементы перечисления и записать их в массив zipEntries класса Vector, мы можем создать цикл:

Класс ZipEntry

В классе ZipEntry определены две константы, конструктор и несколько методов.

Константы обозначают использованный метод компрессии:

Если файл сохранен в архиве без компрессии, для него используется метод ZipEntry.STORED, а если с компрессией — метод ZipEntry.DEFLATED.

Конструктор класса ZipEntry позволяет создать новый элемент оглавления архива с заданным именем:

Что же касается методов класса ZipEntry, то их можно разделить на две группы, одна из которых предназначена для установки атрибутов элемента оглавления архива ZIP, а другая — для извлечения.

Рассмотрим эти методы.

setCrc

Этот метод позволяет установить значение контрольной суммы для несжатого файла, описываемого данным элементом оглавления архива. Для вычисления контрольной суммы применяется алгоритм CRC-32.

getCrc

Предназначен для извлечения контрольной суммы, записанной в элемент оглавления.

setMethod

С помощью этого метода вы можете установить режим добавления файла в архив — с компрессией или без компрессии. В первом случае методу необходимо передать значение ZipEntry.DEFLATED, а во втором — значение ZipEntry.STORED.

getMethod

Метод getMethod позволяет знать способ компрессии, который был использован для файла, соответствующего данному элементу архива. Он может возвращать значения ZipEntry.DEFLATED или ZipEntry.STORED.

setExtra

С помощью этого метода можно записать в элемент оглавления архива произвольную дополнительную информацию.

getExtra

Метод getExtra возвращает дополнительную информацию, записанную в элементе оглавления архива.

setComment

Запись в элемент оглавления архива дополнительной текстовой строки комментария.

getComment

Чтение строки комментария.

getCompressedSize

Метод getCompressedSize возвращает размер сжатого файла или значение -1, если этот размер неизвестен.

isDirectory

Помимо файлов, в архиве могут хранится каталоги. В этом случае имя соответствующего элемента должно оканчиваться символом «/». Метод isDirectory позволяет узнать, является ли данные элемент описателем каталога или файла. В первом случае он возвращает значение true, а во втором — false.

getName

Этот метод позволяет узнать имя, соответствующее данному элементу оглавления архива. Изменить имя нельзя — оно передается конструктору класса ZipEntry при создании нового элемента оглавления.

setTime

Установка времени модификации файла (в количестве миллисекунд, прошедших с начала эпохи).

getTime

Определение времени модификации файла.


setSize

Установка размера несжатого файла.

getSize

Определение размера несжатого файла.

Описание примера

Наш пример автономного приложения ZipFileView создает одно главное окно класса Frame, в котором предусмотрено меню (рис. 1).

Рис. 1. Главное окно приложения

Строка Open меню File позволяет выбрать (с помощью стандартной диалоговой панели класса FileDialog) файл формата ZIP. Сразу после выбора такого файла на экране появляется диалоговая панель со списком имен элементов оглавления выбранного архива ZIP (рис. 2).

Рис. 2. Список элементов оглавления выбранного архива

Если выделить в этом списке любую строку, в главном окне приложения появится описание содержимого соответствующего элемента оглавления (рис. 1).

С помощью кнопки Extract вы сможете извлечь выделенный файл из архива и сохранить его на диске. Для выбора пути и имени сохраняемого файла наше приложение отобразит на экране стандартную диалоговую панель класса FileDialog.

Рассмотрим наиболее интересные фрагменты исходного текста приложения.

Прежде всего обратите внимание на классы, подключаемые оператором import:

Классы java.util.zip.* нужны для работы с файлами ZIP, а класс java.text.* — для форматирования строки даты изменения файлов, записанных в архиве.

Когда пользователь выбирает строку Open из меню File, метод actionPerformed, определенный в классе FrameWindow, отображает на экране стандартную диалоговую панель для выбора ZIP-файла:

Путь к выбранному файлу записывается в переменную szPath. Он затем передается конструктору класса ZipFileDialog, определенному в нашем приложении для отображения списка элементов оглавления ZIP-файла:

Класс ZipFileDialog

Класс ZipFileDialog создан на базе класса Dialog и реализует ряд интерфейсов:

В этом классе определено несколько полей.

В поле zf класса ZipFile хранится ссылка на объект, созданная для выбранного пользователем ZIP-файла:

Массив zipEntries класса Vector предназначен для хранения извлеченных элементов оглавления ZIP-файла:

Конструктор класса ZipFileDialog создает все необходимые компоненты и добавляют их в окно панели с применением режима размещения компонент GridBagLayout. Перед завершением своей работы он вызывает метод updateList:

Этот метод заполняет список, расположенный в окне панели, именами элементов оглавления архива.

Метод updateList класса ZipFileDialog

Рассмотрим исходный текст метода updateList, заполняющий список именами элементов оглавления архива.

Первым делом этот метод очищает список, удаляя из него все элементы:

Далее метод updateList выполняет все операции в блоке try-catch, что необходимо для обработки исключений.

Первым делом мы создаем объект класса ZipFile и с помощью метода entries получаем перечисление элементов оглавления архива:

Далее метод изменяет заголовок диалоговой панели, добавляя туда путь к выбранному архиву:

Пользуясь полученным перечислением мы заполняем массив zipEntries, записывая в него объекты класса ZipEntry:

Далее перебирая элементы массива zipEntries в цикле мы извлекаем имена элементов и добавляем их в список, расположенный в окне диалоговой панели:

Метод itemStateChanged класса ZipFileDialog

Когда пользователь выделяет в списке строку имени элемента оглавления массива, управление передается методу itemStateChanged, реализованному как часть интерфейса ItemListener:

Наша реализация этого метода вызывает метод getZipFileEntryInfo, извлекающий информацию из элемента оглавления архива и отображающий ее в главном окне приложения.

Метод getZipFileEntryInfo класса ZipFileDialog

Получив управление, метод getZipFileEntryInfo определяет номер элемента, выделенного пользователем в списке:

Далее из массива zipEntries извлекается соответствующий элемент класса ZipEntry:

Перед тем как отобразить атрибуты данного элемента в главном окне приложения, мы очищаем расположенное там многострочное окно редактирования, выделяя в нем весь текст и заменяя пустой строкой:

Затем мы формируем новый текст в переменной szItemInfo, записывая туда значения атрибутов, извлеченные из элемента оглавления соответствующими методами класса ZipEntry:

Затем полученная строка добавляется в редактор главного окна приложения:

Метод actionPerformed класса ZipFileDialog

Когда пользователь нажимает кнопку Extract, расположенную в нижней части диалоговой панели со списком, метод actionPerformed извлекает из списка имя выделенного элемента архива и передает его методу saveZipFile:

Метод saveZipFile класса ZipFileDialog

В задачу метода saveZipFile входит извлечение из архива указанного файла и сохранение его на диске.

Прежде всего мы выделяем из полного пути к файлу имя:

Это имя затем используется при инициализации панели выбора выходного класса:

Таким образом, пользователю предлагается сохранить файл под тем именем, под которым он хранился в архиве.

Далее метод saveZipFile записывает полный путь к сохраняемому файлу в переменной szPath.

На следующем этапе метод создает выходной поток, связанный с файлом:

Узнав номер строки, выделенной пользователем в списке имен файлов, мы извлекаем из массива zipEntries соответствующий элемент оглавления класса ZipEntry:

Далее нам необходимо скопировать данные из архива в выходной файл fos.

Чтобы это сделать, мы получаем ссылку на входной поток, связанный с объектом ZipFile:

Копирование выполняется в цикле с применением методов read и write:

Как открыть файл jar на компьютере?

Digital

Содержание

С помощью jar файлов осуществляется архивирование и распаковка. Одной из важных их особенностей является способность к сжатию, исключающая потери. Формат .jar обеспечивает эффективную сортировку и отправку документов. Прежде чем узнать, как открыть файл jar на компьютере, необходимо выполнить его установку и активацию, чтобы он стал исполняемым.

Своим именем jar формат обязан Java ARchive, от которого он происходит. Основным назначением его является разработка и распространение дополнений, предназначенных для программ, созданных компанией Mozilla.

Как открыть файл jar на компьютере?

Открыть файл jar на компьютере можно легко и быстро, щелкнув два раза по нему мышью, после чего произойдет выбор системой Windows необходимой программы, позволяющей справиться с задачей.

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

В случае открытия файла jar в неверной программе требуется изменение настроек. Для этого необходимо, чтобы документ содержал файл MANIFEST.MF в каталоге META-INF с указанием главного класса программы, включающий метод main.

Для просмотра содержимого jar архива можно использовать любой архиватор со сжатием ZIP. Запуск такого файла можно осуществить, используя эмулятор Java-приложений MidpX. Еще один способ – метод его конвертирования в формат .EXE программой JAR2EXE Converter.

Возможности приложений

Перед тем, как приступать к использованию jar файла, необходимо выполнить его открытие, используя совместимое приложение, которое можно выбрать из следующего списка:

Широкое применение находят на практике дополнения, предназначенные для работы с браузером Firefox. Они обеспечивают значительное расширение функциональных возможностей браузера и его настройку с учетом личных потребностей, которые определяет для себя каждый пользователь.

Например, с помощью дополнений можно:

  • производить закачку видео, представленных на популярных видеохостингах
  • удалять рекламные материалы с веб-страниц
  • осуществлять управление работой браузера, используя жесты и т.д.

Приложение-календарь Mozilla Sunbird может расширять свои возможности при использовании дополнений. Это приложение предназначено для составления расписания дня и создания задач, назначением которых является оповещение в специально установленное время.

Thunderbird – это отличный помощник, обеспечивающий просмотр почтовых уведомлений, создание новых писем, фильтрование спама, обратное отправление почты и др. Дополнения способствуют лучшей совместимости Thunderbird с инструментами от Microsoft, обеспечивают более удобную работу с контактами, подписями для писем и др.

Зная полезную информацию, можно приступать к работе с jar файлом на компьютере.

Илон Маск рекомендует:  Что такое код msql_listtables
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL