pack200 [ options ] output-file JAR-file
オプションは順不同です。コマンド行またはプロパティファイルの最後のオプションが、前に指定したオプションすべてに優先します。
options
- コマンド行オプション
output-file
- 出力ファイルの名前
JAR-file
- 入力ファイルの名前
pack200
ツールは、Javagzip
圧縮プログラムを使用して、JAR ファイルをpack200
圧縮ファイルに変換する Java アプリケーションです。pack200
ファイルは、圧縮率の高いファイルであり、直接配備、帯域幅の節約、およびダウンロード時間の短縮に役立ちます。
pack200
ツールでは、複数のオプションを使用して、圧縮エンジンの微調整と設定を行います。一般的な使用法:
% pack200 myarchive.pack.gz myarchive.jar
この例では、
myarchive.pack.gz
は、デフォルトのpack200
設定を使用して作成されます。
-r --repack
myarchive.jar
ファイルをパックした後にアンパックすることにより、JAR ファイルを生成します。生成されたファイルは、jarsigner(1)
ツールへの入力ファイルとして使用できます。
% pack200 --repack myarchive-packer.jar myarchive.jar
% pack200 --repack myarchive.jar
-g --no-gzip
pack200
ファイルを生成します。このオプションでは、適切な圧縮プログラムを使用する必要があり、ターゲットシステムは、対応する解凍プログラムを使用する必要があります。
% pack200 --no-gzip myarchive.pack myarchive.jar
-G --strip-debug
出力から、デバッグに使用される属性を取り除きます。この属性には、
SourceFile
、LineNumberTable
、LocalVariableTable
、およびLocalVariableTypeTable
があります。これらの属性を取り除くと、ダウンロードおよびインストールの両方のサイズが小さくなりますが、デバッガの有効性も低下します。
-O --no-keep-file-order
この圧縮プログラムは、すべての要素を並べ替えて送信します。さらに、この圧縮プログラムは、JAR ディレクトリ名を削除できます。削除するとダウンロードサイズは減少しますが、索引付けなど特定の JAR ファイル最適化が、正しく機能しなくなる場合があります。
-Svalue --segment-limit=value
この値は、各アーカイブセグメントの予想ターゲットサイズ N (バイト単位) です。単一の入力ファイルのサイズが N バイトを超える場合は、それ自身のアーカイブセグメントが与えられます。特別な場合としては、
-1
の値は、すべての入力ファイルを含む単一の大きなセグメントを生成し、0
は、クラスごとに 1 つのセグメントを生成します。アーカイブセグメントが大きくなると、断片化が少なくなり圧縮率が高くなりますが、その処理には多くのメモリが必要です。各セグメントのサイズは、セグメントに変換されるそれぞれの入力ファイルのサイズのほか、その名前と他の送信されるプロパティのサイズを計算して推測されます。
デフォルトは、
1000000
(100 万バイト) です。これは、複数の適度なサイズの入力 JAR ファイルを 1 つのセグメントに送信できるサイズです。また、このサイズによって、圧縮プログラムと解凍プログラムのメモリ要件が制限されます。この制限を使用せずに圧縮した 10 MB の JAR は、通常は約 10% 圧縮されますが、より大きな Java ヒープが圧縮プログラムに必要になる場合があります (セグメント限界の約 10 倍)。
-Evalue --effort=value
この値が、単一の 10 進数字に設定されている場合、圧縮プログラムはアーカイブの圧縮時に、指定量の effort を使用します。レベル
1
では、いくぶん大きなサイズになり圧縮速度が速くなりますが、レベル9
では、かなり時間がかかるものの、圧縮率は高くなることがあります。特殊な値0
は、元の JAR ファイルを圧縮せずに直接コピーするように、圧縮プログラムに指示します。JSR 200 標準では、すべての解凍プログラムが、この特別な場合をアーカイブ全体のパススルーと解釈するように規定しています。デフォルトは
5
であり、適度な時間で適度な圧縮率が得られます。
-Hvalue --deflate-hint=value
デフォルトを無効にします。これにより入力情報が保持されますが、送信後のアーカイブが大きくなることがあります。次の値を指定できます。
true
false
- どちらの場合でも、圧縮プログラムは、それぞれに応じたデフレーションヒントを出力アーカイブに設定し、アーカイブ要素の個々のデフレーションヒントを送信しません。
keep
- 入力 JAR で見つかったデフレーションヒントを保持します。これがデフォルトの設定です。
-mvalue --modification-time=value
次の値を指定できます。
latest
- 圧縮プログラムは、元のアーカイブにある全利用可能エントリの中から最新の変更時間を特定するか、そのセグメントにある全利用可能エントリの最新の変更時間を特定しようとします。この単一の値は、セグメントの一部として送信され、各セグメントのすべてのエントリに適用されます。これにより、アーカイブの送信後のサイズがわずかに減少しますが、組み込まれたファイルすべてが単一の日付に設定されるというデメリットがあります。
keep
- 入力 JAR で見つかった変更時間を保持します。これがデフォルトの設定です。
-Pfile --pass-file=file
ファイルを圧縮せずにそのまま渡すように指示します。オプションを繰り返すことにより、複数のファイルを指定できます。パス名の変換は行われませんが、システムファイルの区切り文字は、JAR ファイルの区切り文字 「
/
」に置き換えられます。生成されるファイル名は、文字列として正確に JAR ファイルでの出現と一致している必要があります。ファイルがディレクトリ名である場合、そのディレクトリ下のすべてのファイルが渡されます。
-Uaction --unknown-attribute=action
デフォルトの動作を無効にします。つまり、未知の属性を含んだクラスファイルは、指定したアクションで渡されます。このアクションには次の値を指定できます。
error
- 全体としての
pack200
操作は失敗し、該当する説明が表示されます。strip
- 属性は削除されます。注: 必要な VM 属性を削除すると、クラスローダの障害を招くことがあります。
pass
- この属性を指定すると、クラス全体がリソースであるかのように送信されます。
-Cattribute-name=layout --class-attribute=attribute-name=action
-Fattribute-name=layout --field-attribute=attribute-name=action
-Mattribute-name=layout --method-attribute=attribute-name=action
-Dattribute-name=layout --code-attribute=attribute-name=action
上記の 4 つのオプションを使用すると、クラスエンティティに対して、クラス属性、フィールド属性、メソッド属性、コード属性などの属性レイアウトを指定できます。属性名は、レイアウトまたはアクションが定義されている属性の名前です。アクションには次の値を指定できます。
some-layout-string
- レイアウト言語は、JSR 200 仕様に規定されています。
例:
--class-attribute=SourceFile=RUH
error
- この属性を指定すると、pack200 の操作は失敗し、該当する説明が表示されます。
strip
- この属性を指定すると、その属性は出力から削除されます。注: VM の必要な属性を削除すると、クラスローダの障害を招くことがあります。
例:
--class-attribute=CompilationID=pass
と指定すると、圧縮プログラムはそれ以上のアクションを行わずに、この属性を含むクラスファイルを渡します。
-f pack.properties --config-file=pack.properties
圧縮プログラムを初期化する Java プロパティを含んだ構成ファイルは、コマンド行で指定できます。
% pack200 -f pack.properties myarchive.pack.gz myarchive.jar
% more pack.properties
# Generic properties for the packer.
modification.time=latest
deflate.hint=false
keep.file.order=false
# This option will cause the files bearing new attributes to
# be reported as an error rather than passed uncompressed.
unknown.attribute=error
# Change the segment limit to be unlimited.
segment.limit=-1
-v --verbose
このオプションを複数列挙すると、さらに詳細なメッセージが出力されます。
-q --quiet
メッセージの表示されない非出力操作を指定します。
-lfilename --log-file=filename
メッセージを出力するログファイルを指定します。
-Joption
pack200
によって呼び出される Java 起動ツールへオプションを渡します。たとえば、-J-Xms48m
と指定すると、起動メモリは 48M バイトに設定されます。このオプションは-X
で始まっていませんが、pack200
の標準オプションではありません。-J
を使って、Java で記述されたアプリケーションを実行する背後の VM にオプション渡すことは、よく行われています。
次の終了値が返されます。
0
正常に終了した場合
>0
エラーが生じた場合
unpack200(1)
、jar(1)
、jarsigner(1)
、attributes(5)
のマニュアルページjar
- Java Archive ツール」jarsigner
- JAR 署名および検証ツール」このコマンドは、
pack(1)
と混同しないでください。これらは完全に別々の製品です。JDK とともに提供される J2SE API 仕様は、他のマニュアルおよび仕様と矛盾が生じた場合に最優先されます。