Читать «Java 7 (Наиболее полное руководство)» онлайн - страница 398

Ильдар Шаукатович Хабибуллин

Перед первым именем каталога может стоять параметр -с. Конструкция -c dir означает, что на время выполнения утилиты jar текущим каталогом станет каталог dir.

Необязательные параметры занесены в квадратные скобки.

Итак, в конце командной строки должно быть записано хотя бы одно имя файла или каталога. Если среди параметров есть буква f, то первый из этих файлов понимается как архивный jar-файл. Если среди параметров находится буква m, то первый файл понимается как файл описания (manifest-file). Если среди параметров присутствуют обе буквы, то имя архивного файла и имя файла описания должны идти в том же порядке, что и буквы f и m.

Если параметр f и имя архивного файла отсутствуют, то архивным файлом будет служить стандартный вывод.

Если параметр m и имя файла описания отсутствуют, то по умолчанию файл MANIFEST.MF, лежащий в каталоге META-INF архивного файла, будет содержать только номер версии.

На рис. 25.2 показан процесс создания архива Base.jar в каталоге ch3.

Сначала показано содержимое каталога ch3. Затем создается архив, в который включается файл Base.class и все содержимое подкаталога classes. Снова выводится содержимое каталога ch3. В нем появляется файл Base.jar. Потом выводится содержимое архива.

Как видите, в архиве создан каталог META-INF, а в нем файл MANIFEST.MF.

Рис. 25.2. Работа с утилитой j ar

Файл описания MANIFEST.MF

Файл MANIFEST.MF, расположенный в каталоге META-INF архивного файла, предназначен для нескольких целей:

□ перечисления файлов из архива, снабженных цифровой подписью;

□ перечисления компонентов JavaBeans, расположенных в архиве;

□ указания имени основного класса для выполнения приложения из архива;

□ указания имени файла, содержащего изображение загрузочного окна;

□ записи сведений о версии пакета.

Вся информация сначала записывается в обычном текстовом файле с любым именем, например manif. Потом запускается утилита jar, в которой этот файл указывается как значение параметра m, например:

jar cmf manif Base.jar classes Base.class

Утилита проверяет правильность записей в файле manif и переносит их в файл MANIFEST.MF, добавляя свои записи.

Файл описания manif должен быть написан по строгим правилам, изложенным в спецификации JAR File Specification. Ее можно найти в документации Java SE, в файле docs/technotes/guides/j ar/j ar.html.

Например, если мы хотим выполнять приложение с главным файлом Base.class из архива Base.jar, то файл manif должен содержать как минимум две строки:

Main-Class: Base

Первая строка содержит относительный путь к главному классу, но не к файлу, т. е. без расширения class. В этой строке каждый символ имеет значение, даже пробел. Вторая строка пустая — файл обязательно должен заканчиваться пустой строкой, точнее говоря, символом перевода строки '\n'.