Spec-Zone .ru
спецификации, руководства, описания, API
|
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
команда.c
), обновленный (u
), извлеченный (x
), или имейте его просматриваемое оглавление (t
).-f опция и имя файла jarfile являются парой - если любой присутствует, они должны оба появиться. Отметьте то исключение f
и jarfile принимает "файл фляги" от стандартного ввода (для x и t) или отправляет "файл фляги" стандартному выводу (для c и u).:
пары значения должны быть включены в MANIFEST.MF в файле фляги.-m опция и декларация имени файла являются парой - если любой присутствует, они должны оба появиться. Буквы м., f и e должны появиться в том же самом порядке, которые проявляют, jarfile, entrypoint, появляются.-C
dir-C
dir inputfiles наборы позволяется.-J
опцияТипичное использование, чтобы объединить файлы в файл фляги:
% jar cf myFile.jar *.classВ этом примере все файлы класса в текущем каталоге помещаются в файл, названный myFile.jar. Инструмент фляги автоматически генерирует названную запись файла манифеста
META-INF/MANIFEST.MF
. Это всегда - первая запись в файле фляги. Файл манифеста объявляет метаинформацию об архиве, и хранит те данные как имя : пары значения. Обратитесь к спецификации файла JAR для деталей, объясняющих, как инструмент фляги хранит метаинформацию в файле манифеста. Если файл фляги должен включать имя : пары значения, содержавшиеся в существующем файле манифеста, определите что файл, используя-m опцию:
% jar cmf myManifestFile myFile.jar *.classСуществующий файл манифеста должен закончиться новым знаком строки. фляга не анализирует последнюю строку файла манифеста, если это не заканчивается новым знаком строки.
% 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 на файлах фляги и декларациях файла фляги, см. Примеры, ниже. Также обратитесь к следу фляги
f
определяется) или к стандартному выводу (если f
и jarfile опускаются). Добавьте к этому файлы и каталоги, определенные inputfiles.f
определяется), добавляя к этому файлы и каталоги, определенные inputfiles. Например: jar uf foo.jar foo.classдобавил бы файл foo.class к существующему файлу фляги foo.jar.-u опция может также обновить явную запись, как дано этим примером:
jar umf manifest foo.jarобновляет декларацию foo.jar с именем: пары значения в manifest.
f
определяется) или стандартный ввод (если f
и jarfile опускаются). Если inputfiles определяется, только те указанные файлы и каталоги извлекаются. Иначе, все файлы и каталоги извлекаются. Время и дата извлеченных файлов - данные в архиве.f
определяется) или стандартный ввод (если f
и jarfile опускаются). Если inputfiles определяется, только те указанные файлы и каталоги перечисляются. Иначе, все файлы и каталоги перечисляются.jar i foo.jar
генерировал бы файл INDEX.LIST в foo.jar, который содержит информацию о расположении для каждого пакета в foo.jar и всех файлах фляги, определенных в атрибуте Class-Path foo.jar. См. индексный пример.
c
), обновленный (u
), извлеченный (x
), индексированный (i
), или просматриваемый (t
).-f опция и имя файла jarfile являются парой - если существующий, они должны оба появиться. Исключение f
и jarfile принимает имя файла фляги от stdin
(для x и t), или отправляет файл фляги stdout
(для c и u).jar
добавляет имя : оцените пару, если запись уже не существует с тем же самым именем, когда jar
обновляет его значение. jar cmf myManifestFile myFile.jar *.classМожно добавить имя специального назначения : оцените пар атрибута декларации, которые не содержатся в декларации по умолчанию. Например, можно добавить атрибуты, определяющие информацию о поставщике, информацию о версии, изоляцию пакета, или сделать связанную JAR исполнимую программу приложений. См., что
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
спецификация, приводя к ошибке и работе создания или обновления фляги прерывается.
cd
dir) во время выполнения команды jar, обрабатывая следующий inputfiles параметр. Его работа предназначается, чтобы быть подобной-C опции утилиты tar UNIX.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
-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
% 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
Чтобы добавить индексный файл к файлу фляги для того, чтобы ускорить загрузку класса, используйте меня опция.
Пример:
Class-Path: buy.jar sell.jarтогда можно использовать-i опцию, чтобы ускорить время загрузки класса для Вашего приложения:
% jar i main.jar
INDEX.LIST
файл вставляется в META-INF
каталог. Это позволяет загрузчику класса приложений загрузить указанные файлы фляги, когда он ищет классы или ресурсы.