Spec-Zone .ru
спецификации, руководства, описания, API
Содержание документации

фляга - Инструмент Архива Java

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

РЕЗЮМЕ

Создайте файл фляги
jar c[v0Mmfe] [декларация] [jarfile] [entrypoint] [-C dir] inputfiles [-Jопция]
Файл фляги обновления
jar u[v0Mmfe] [декларация] [jarfile] [entrypoint] [-C dir] inputfiles [-Jопция]
Файл фляги извлечения
jar x[vf] [jarfile] [inputfiles] [-Jопция]
Оглавление списка файла фляги
jar t[vf] [jarfile] [inputfiles] [-Jопция]
Добавьте индекс, чтобы сотрясать файл
jar i jarfile [-Jопция]

где:

cuxtiv0Mmfe
Опции, которые управляют jar команда.
jarfile
Файл фляги, который будет создан (c), обновленный (u), извлеченный (x), или имейте его просматриваемое оглавление (t).-f опция и имя файла jarfile являются парой - если любой присутствует, они должны оба появиться. Отметьте то исключение f и jarfile принимает "файл фляги" от стандартного ввода (для x и t) или отправляет "файл фляги" стандартному выводу (для c и u).
inputfiles
Файлы или каталоги, разделенные пробелами, чтобы быть объединенным в jarfile (для c и u), или быть извлеченным (для x) или перечисленным (для t) от jarfile. Все каталоги обрабатываются рекурсивно. Файлы сжимаются, если опция 0 (нуль) не используется.
декларация
Существующий ранее файл манифеста, чье имя: пары значения должны быть включены в MANIFEST.MF в файле фляги.-m опция и декларация имени файла являются парой - если любой присутствует, они должны оба появиться. Буквы м., f и e должны появиться в том же самом порядке, которые проявляют, jarfile, entrypoint, появляются.
entrypoint
Имя класса, которые устанавливают как точка входа приложения для автономных приложений, связанных в исполнимый файл фляги.-e опция и entrypoint являются парой - если любой присутствует, они должны оба появиться. Буквы м., f и e должны появиться в том же самом порядке, которые проявляют, jarfile, entrypoint, появляются.
-C dir
Временно каталоги изменений к dir, обрабатывая следующий inputfiles параметр. Многократный -C dir inputfiles наборы позволяется.
-Jопция
Опция, которую передадут в среду выполнения Java. (Не должно быть никакого пространства между-J и опцией).

ОПИСАНИЕ

Инструмент фляги комбинирует многократные файлы в единственный архивный файл JAR. фляга является инструментом архивирования и сжатия общего назначения, основанным на ZIP и формате сжатия ZLIB. Однако, фляга была разработана, главным образом, апплеты java пакета или приложения в единственный архив. Когда компоненты апплета или приложения (файлы, изображения и звуки) объединяются в единственный архив, они могут быть загружены агентом java (как браузер) в единственной транзакции HTTP, вместо того, чтобы требовать нового соединения для каждой части. Это существенно улучшает времена загрузки. фляга также сжимает файлы и столь далее улучшает время загрузки. Кроме того, это позволяет отдельным записям в файле быть подписанными автором апплета так, чтобы их источник мог аутентифицироваться. Синтаксис для инструмента фляги почти идентичен синтаксису для команды tar. Архив фляги может использоваться в качестве записи пути к классу, сжимается ли он.

Типичное использование, чтобы объединить файлы в файл фляги:

% jar cf myFile.jar *.class
В этом примере все файлы класса в текущем каталоге помещаются в файл, названный myFile.jar. Инструмент фляги автоматически генерирует названную запись файла манифеста META-INF/MANIFEST.MF. Это всегда - первая запись в файле фляги. Файл манифеста объявляет метаинформацию об архиве, и хранит те данные как имя : пары значения. Обратитесь к спецификации файла JAR для деталей, объясняющих, как инструмент фляги хранит метаинформацию в файле манифеста.

Если файл фляги должен включать имя : пары значения, содержавшиеся в существующем файле манифеста, определите что файл, используя-m опцию:

% jar cmf myManifestFile myFile.jar *.class
Существующий файл манифеста должен закончиться новым знаком строки. фляга не анализирует последнюю строку файла манифеста, если это не заканчивается новым знаком строки.

Отметьте: команда фляги, которая определяет, подтверждает на командной строке вместо cmf (порядок м., и-f опции инвертируются), командная строка фляги должна определить, что имя фляги архивирует сначала, сопровождаемый именем файла манифеста:
% jar cfm myFile.jar myManifestFile *.class
Декларация находится в текстовом формате, вдохновленном форматом ASCII RFC822, таким образом, легко просмотреть и обработать содержание файла манифеста.

Чтобы извлечь файлы из файла фляги, использовать x:

% jar xf myFile.jar

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

% jar xf myFile.jar foo bar

Начинаясь с версии 1.3 JDK, утилита jar поддерживает JarIndex, который позволяет загрузчикам класса приложений загружать классы более эффективно из файлов фляги. Если приложение или апплет будут связаны в многократные файлы фляги, то только необходимые файлы фляги будут загружены и открыты, чтобы загрузить классы. Эта оптимизация производительности включается, выполняя jar с-ioption. Это генерирует информацию о расположении пакета для указанного основного файла фляги и всех файлов фляги, от которых это зависит, который должен быть определен в атрибуте Class-Path основной декларации файла фляги.

% jar i main.jar

В этом примере, INDEX.LIST файл вставляется в META-INF каталог main.jar.

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

Чтобы скопировать каталоги, сначала сожмите файлы в dir1 к stdout, тогда извлечение из stdin к dir2 (исключение-f опции от обоих jar команды):

% (cd dir1; jar c .) | (cd dir2; jar x)

Рассмотреть выборки команды, которые используют jar к opeate на файлах фляги и декларациях файла фляги, см. Примеры, ниже. Также обратитесь к следу фляги Учебного руководства по Java.

ОПЦИИ

c
Создает новый архивный файл, названный jarfile (если f определяется) или к стандартному выводу (если f и jarfile опускаются). Добавьте к этому файлы и каталоги, определенные inputfiles.
u
Обновляет существующий файл jarfile (когда f определяется), добавляя к этому файлы и каталоги, определенные inputfiles. Например:
jar uf foo.jar foo.class
добавил бы файл foo.class к существующему файлу фляги foo.jar.-u опция может также обновить явную запись, как дано этим примером:
jar umf manifest foo.jar
обновляет декларацию foo.jar с именем: пары значения в manifest.
x
Файлы извлечений и каталоги от jarfile (если f определяется) или стандартный ввод (если f и jarfile опускаются). Если inputfiles определяется, только те указанные файлы и каталоги извлекаются. Иначе, все файлы и каталоги извлекаются. Время и дата извлеченных файлов - данные в архиве.
t
Перечисляет оглавление от jarfile (если f определяется) или стандартный ввод (если f и jarfile опускаются). Если inputfiles определяется, только те указанные файлы и каталоги перечисляются. Иначе, все файлы и каталоги перечисляются.
i
Генерируйте информацию об индексе для указанного jarfile и его зависимых файлов фляги. Например:
jar i foo.jar

генерировал бы файл INDEX.LIST в foo.jar, который содержит информацию о расположении для каждого пакета в foo.jar и всех файлах фляги, определенных в атрибуте Class-Path foo.jar. См. индексный пример.

f
Определяет файл jarfile, чтобы быть созданным (c), обновленный (u), извлеченный (x), индексированный (i), или просматриваемый (t).-f опция и имя файла jarfile являются парой - если существующий, они должны оба появиться. Исключение f и jarfile принимает имя файла фляги от stdin(для x и t), или отправляет файл фляги stdout (для c и u).
v
Генерирует многословный вывод к стандартному выводу. Примеры, показанные ниже.
0
(нулевое) Хранилище, не используя сжатие ZIP.
M
Не создавайте запись файла манифеста (для c и u), или удаляйте запись файла манифеста, если Вы существуете (для u).
m
Включает имя: оцените пар атрибута от указанной декларации файла манифеста в файле в META-INF/MANIFEST.MF. jar добавляет имя : оцените пару, если запись уже не существует с тем же самым именем, когда jar обновляет его значение.

На командной строке буквы м. и f должны появиться в том же самом порядке, которые проявляют, и jarfile появляются. Использование в качестве примера:
jar cmf myManifestFile myFile.jar *.class
Можно добавить имя специального назначения : оцените пар атрибута декларации, которые не содержатся в декларации по умолчанию. Например, можно добавить атрибуты, определяющие информацию о поставщике, информацию о версии, изоляцию пакета, или сделать связанную JAR исполнимую программу приложений. См., что Файлы JAR запаздывают в Учебном руководстве по Java для примеров использования-m опции.
e
Наборы entrypoint как точка входа приложения для автономных приложений связывались в исполнимый файл фляги. Использование этой опции создает или переопределяет значение атрибута Основного класса в файле манифеста. Эта опция может использоваться во время создания файла фляги или обновляя файл фляги. Эта опция определяет точку входа приложения, не редактируя или создавая файл манифеста.


Например, эта команда создает Main.jar где значение атрибута Основного класса в декларации устанавливается в Main:
jar cfe Main.jar Main Main.class
Среда выполнения Java может непосредственно вызвать это приложение, выполняя следующую команду:
java -jar Main.jar
Если entrypoint имя класса находится в пакете, оно может использовать любого точка (". ") или наклонная черта (" / ") символ как разделитель. Например, если Main.class находится в вызванном пакете foo точка входа может быть определена следующими способами:
jar -cfe Main.jar foo/Main foo/Main.class
или
jar -cfe Main.jar foo.Main foo/Main.class
Отметьте: определение обоих -m и опции-e вместе, когда данная декларация также содержит результаты атрибута Основного класса в ambigous Main.class спецификация, приводя к ошибке и работе создания или обновления фляги прерывается.
 dir -C
Временно каталоги изменений (cd dir) во время выполнения команды jar, обрабатывая следующий inputfiles параметр. Его работа предназначается, чтобы быть подобной-C опции утилиты tar UNIX.

Например, эта команда изменяется на каталог classes и добавляет bar.class от того каталога до foo.jar:
jar uf foo.jar -C classes bar.class
Эта команда изменяется на каталог classes и добавляет к foo.jar все файлы в пределах каталога classes (не создавая каталог классов в файле фляги), затем возвращается к исходному каталогу прежде, чем измениться на каталог bin, чтобы добавить xyz.class к foo.jar.
jar uf foo.jar -C classes . -C bin xyz.class
Если classes содержит файлы bar1 и bar2, тогда вот то, что файл фляги будет содержать использование jar tf foo.jar:
META-INF/
META-INF/MANIFEST.MF
bar1
bar2
xyz.class

-Joption
Опция передачи к среде выполнения Java, где опция является одной из опций, описанных на ссылочной странице для средства запуска приложения java. Например, -J-Xmx48M устанавливает максимальную память в 48 мегабайтов. Это - общее соглашение для-J, чтобы передать опции к базовой среде выполнения.

ФАЙЛЫ ПАРАМЕТРА КОМАНДНОЙ СТРОКИ

Чтобы сократить или упростить командную строку фляги, можно определить один или более файлов, которые непосредственно содержат параметры jar команда (кроме -J опции). Это позволяет Вам создать команды фляги любой длины, преодолевая пределы командной строки, наложенные операционной системой.

Файл параметра может включать опции и имена файлов. Параметры в пределах файла могут быть разделены пробелом или разделены от новой строки. Имена файлов в пределах файла параметра относительно текущего каталога, не относительно расположения файла параметра. Подстановочные знаки (*), который мог бы иначе быть расширен оболочкой операционной системы, не расширяются. Использование символ, чтобы рекурсивно интерпретировать файлы не поддерживается.-J опции не поддерживаются, потому что их передают к средству запуска, которое не поддерживает файлы параметра.

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

Пример ниже, classes.list содержит имена файлов, выведенных a find команда:

% find . -name '*.class' -print > classes.list

Можно тогда выполниться jar команда на Classes.list передавая это к jar использование argfile синтаксис:

% jar cf my.jar @classes.list
Файл параметра может определить путь, но любые имена файлов в файле параметра, у которых есть относительные пути, относительно текущего рабочего каталога, не к пути, в котором передают. Вот пример:
% jar @path1/classes.list

ПРИМЕРЫ

Добавить все файлы в определенном каталоге к архиву (перезаписывающий содержание, если архив уже существует). Перечисление многословно (с-v опцией) скажет Вам больше информации о файлах в архиве, таких как их размер и продлится измененная дата.
% ls
1.au          Animator.class    monkey.jpg
2.au          Wave.class        spacemusic.au
3.au          at_work.gif

% jar cvf bundle.jar *
added manifest
adding: 1.au(in = 2324) (out= 67)(deflated 97%)
adding: 2.au(in = 6970) (out= 90)(deflated 98%)
adding: 3.au(in = 11616) (out= 108)(deflated 99%)
adding: Animator.class(in = 2266) (out= 66)(deflated 97%)
adding: Wave.class(in = 3778) (out= 81)(deflated 97%)
adding: at_work.gif(in = 6621) (out= 89)(deflated 98%)
adding: monkey.jpg(in = 7667) (out= 91)(deflated 98%)
adding: spacemusic.au(in = 3079) (out= 73)(deflated 97%)
Если у Вас уже есть отдельные подкаталоги для изображений, аудиофайлов и классов, можно объединить их в единственный файл фляги:
% ls -F
audio/ classes/ images/

% jar cvf bundle.jar audio classes images
added manifest
adding: audio/(in = 0) (out= 0)(stored 0%)
adding: audio/1.au(in = 2324) (out= 67)(deflated 97%)
adding: audio/2.au(in = 6970) (out= 90)(deflated 98%)
adding: audio/3.au(in = 11616) (out= 108)(deflated 99%)
adding: audio/spacemusic.au(in = 3079) (out= 73)(deflated 97%)
adding: classes/(in = 0) (out= 0)(stored 0%)
adding: classes/Animator.class(in = 2266) (out= 66)(deflated 97%)
adding: classes/Wave.class(in = 3778) (out= 81)(deflated 97%)
adding: images/(in = 0) (out= 0)(stored 0%)
adding: images/monkey.jpg(in = 7667) (out= 91)(deflated 98%)
adding: images/at_work.gif(in = 6621) (out= 89)(deflated 98%)

% ls -F
audio/ bundle.jar classes/ images/
Чтобы видеть имена записи в jarfile, используйте t опцию:
% jar tf bundle.jar
META-INF/
META-INF/MANIFEST.MF
audio/1.au
audio/2.au
audio/3.au
audio/spacemusic.au
classes/Animator.class
classes/Wave.class
images/monkey.jpg
images/at_work.gif

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

Пример:

Если Вы разделяете взаимозависимые классы для торгового приложения запаса в три файла фляги: main.jar, buy.jar, и sell.jar.

Если Вы определяете атрибут Пути к классу в декларации main.jar как:
Class-Path: buy.jar sell.jar
тогда можно использовать-i опцию, чтобы ускорить время загрузки класса для Вашего приложения:
% jar i main.jar
INDEX.LIST файл вставляется в META-INF каталог. Это позволяет загрузчику класса приложений загрузить указанные файлы фляги, когда он ищет классы или ресурсы.

СМ. ТАКЖЕ

Краткий обзор Фляги

Спецификация Файла Фляги

Спецификация JarIndex

Учебное руководство по фляге

Ссылочная Страница pack200


Oracle и/или его филиалы Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.
Свяжитесь с Нами