Spec-Zone .ru
спецификации, руководства, описания, API
След: Развертывание
Урок: Упаковка Программ в Файлах JAR
Раздел: Используя Файлы JAR: Основы
Создание Файла JAR
Домашняя страница > Развертывание > Упаковка Программ в Файлах JAR

Создание Файла JAR

Основной формат команды для того, чтобы создать файл JAR:

jar cf jar-file input-file(s)

Опции и параметры, используемые в этой команде:

Опции c И f могут появиться в любом порядке, но не должно быть никакого пространства между ними.

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


Отметьте: 

Метаданные в файле JAR, таком как запись называют, комментируют, и содержание декларации, должны быть закодированы в UTF8.


Можно добавить любую из этих дополнительных опций к опциям cf основной команды:

опции команды фляги
Опция Описание
v Производит многословный вывод на stdout, в то время как файл JAR создается. Многословный вывод говорит Вам имя каждого файла, как это добавляется к файлу JAR.
0 (нуль) Указывает, что Вы не хотите, чтобы файл JAR был сжат.
M Указывает, что файл манифеста значения по умолчанию не должен быть произведен.
m Используемый, чтобы включать явную информацию от существующего файла манифеста. Формат для того, чтобы использовать эту опцию:
jar cmf existing-manifest jar-file input-file(s)
См. Изменение Файла манифеста для получения дополнительной информации о его опции.

Предупреждение: декларация должна закончиться новой строкой или возвратом каретки. Последняя строка не будет проанализирована должным образом, если она не закончится новой строкой или возвратом каретки.
-C Изменить каталоги во время выполнения команды. См. ниже для примера.

Отметьте: 

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


Пример

Давайте смотреть на пример. Простой апплет TicTacToe. Можно видеть исходный код этого Апплета в TicTacToe.java. Этот демонстрационный пример содержит байт-код файл class, аудиофайлы, и изображения, имеющие эту структуру:

Иерархия папок TicTacToe

Иерархия папок TicTacToe

audio и подкаталоги images содержат звуковые файлы и изображения ДЖИФА, используемые апплетом.

Можно получить все эти файлы из каталога фляги/примеров, когда Вы загружаете все Учебное руководство онлайн. Чтобы упаковать этот демонстрационный пример в единственный файл JAR под названием TicTacToe.jar, Вы выполнили бы эту команду изнутри каталога TicTacToe:

jar cvf TicTacToe.jar TicTacToe.class audio images

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

adding: TicTacToe.class (in=3825) (out=2222) (deflated 41%)
adding: audio/ (in=0) (out=0) (stored 0%)
adding: audio/beep.au (in=4032) (out=3572) (deflated 11%)
adding: audio/ding.au (in=2566) (out=2055) (deflated 19%)
adding: audio/return.au (in=6558) (out=4401) (deflated 32%)
adding: audio/yahoo1.au (in=7834) (out=6985) (deflated 10%)
adding: audio/yahoo2.au (in=7463) (out=4607) (deflated 38%)
adding: images/ (in=0) (out=0) (stored 0%)
adding: images/cross.gif (in=157) (out=160) (deflated -1%)
adding: images/not.gif (in=158) (out=161) (deflated -1%)

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

jar cvf0 TicTacToe.jar TicTacToe.class audio images

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

Инструмент Фляги примет параметры, которые используют подстановочный знак символ *. Пока не было никаких нежелательных файлов в каталоге TicTacToe, Вы, возможно, использовали эту альтернативную команду, чтобы создать файл JAR:

jar cvf TicTacToe.jar *

Хотя многословный вывод не указывает на это, инструмент Фляги автоматически добавляет файл манифеста к архиву JAR с путем META-INF/MANIFEST.MF. См. Работу с Файлами манифеста: раздел Основ для информации о файлах манифеста.

В вышеупомянутом примере, файлах в архиве, сохраненном их относительные пути и структура каталогов. Инструмент Фляги предоставляет возможность -C, которую можно использовать, чтобы создать файл JAR, в котором не сохраняются относительные пути заархивированных файлов. Это моделируется после опции -C TAR.

Как пример, предположите, что Вы хотели поместить аудиофайлы и изображения gif, используемые демонстрационным примером TicTacToe в файл JAR, и что Вы хотели, чтобы все файлы были на верхнем уровне без иерархии каталогов. Вы могли выполнить это, давая эту команду из родительского каталога каталогов images И audio:

jar cf ImageAudio.jar -C images . -C audio .

 Часть -C images этой команды направляет инструмент Фляги, чтобы пойти в каталог images, и . после  -C images направляет инструмент Фляги, чтобы заархивировать все содержание того каталога.   Часть -C audio . команды тогда делает то же самое с каталогом audio. У получающегося файла JAR было бы это оглавление:

META-INF/MANIFEST.MF
cross.gif
not.gif
beep.au
ding.au
return.au
yahoo1.au
yahoo2.au

В отличие от этого, предположите, что Вы использовали команду, которая не использовала опцию -C:

jar cf ImageAudio.jar images audio

У получающегося файла JAR было бы это оглавление:

META-INF/MANIFEST.MF
images/cross.gif
images/not.gif
audio/beep.au
audio/ding.au
audio/return.au
audio/yahoo1.au
audio/yahoo2.au

Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Используя Файлы JAR: Основы
Следующая страница: Просмотр Содержания Файла JAR