pack200 - JAR パックツール

形式

pack200 [ options ] output-file JAR-file

オプションは順不同です。コマンド行またはプロパティファイルの最後のオプションが、前に指定したオプションすべてに優先します。

options
コマンド行オプション
output-file
出力ファイルの名前
JAR-file
入力ファイルの名前

説明

pack200 ツールは、Java gzip 圧縮プログラムを使用して、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

出力から、デバッグに使用される属性を取り除きます。この属性には、SourceFileLineNumberTableLocalVariableTable、および 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 エラーが生じた場合

関連項目

このコマンドは、pack(1) と混同しないでください。これらは完全に別々の製品です。

JDK とともに提供される J2SE API 仕様は、他のマニュアルおよび仕様と矛盾が生じた場合に最優先されます。