pack200 [ options ] output-file JAR-file
オプションの指定順序に決まりはありません。コマンド行または properties ファイルに指定された最後のオプションが、それ以前に指定されたすべてのオプションより優先されます。
options
- コマンド行オプション。
output-file
- 出力ファイルの名前。
JAR-file
- 入力ファイルの名前。
pack200
ツールは、Javagzip
圧縮プログラムを使用して、JAR ファイルをpack200
圧縮ファイルに変換する Java アプリケーションです。pack200
ファイルは高圧縮のファイルで、帯域幅の節約やダウンロード時間の短縮や直接配備することができます。
pack200
ツールには、圧縮エンジンの設定や微調整を行うオプションが用意されています。一般的な使用方法:
% pack200 myarchive.pack.gz myarchive.jar
この例では、デフォルトの
pack200
設定で、myarchive.pack.gz
が作成されます。
-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 ファイルを単一セグメント内で転送できるサイズです。パックツールおよびアンパックツールのメモリー要件には制限が課されます。この制限が課されていない 10M バイトの JAR パックファイルは通常、元の 10% 程度のサイズにパックされます。 しかし、パックツールでより大きな Java ヒープ (セグメントの制限の約 10 倍) を必要とする場合もあります。
-Evalue --effort=value
単一の 10 進数値を指定した場合、パックツールは、指定された圧縮率でアーカイブを圧縮します。レベル
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 ファイル内の文字列と完全に一致していなければなりません。file にディレクトリ名を指定した場合、そのディレクトリ内のすべてのファイルが転送されます。
-Uaction --unknown-attribute=action
デフォルトの動作を無効にします。 たとえば、不明な属性を含むクラスファイルを指定したアクションで転送します。アクションとして指定可能な値:
error
pack200
の操作に失敗し、適切な解説が表示されます。strip
- 属性はドロップされます。注: VM 必須属性を削除すると、クラスローダーの障害が発生することがあります。
pass
- この属性が検出された場合、クラス全体が 1 つのリソースとして転送されます。
-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 つのオプションでは、クラスエンティティーに Class 属性、Field 属性、Method 属性、Code 属性などの属性のレイアウトを指定できます。attribute-name には、これからレイアウトまたはアクションを定義する属性の名前を指定します。アクションとして指定可能な値:
(一部のレイアウト文字列)
- レイアウト言語は、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
"エラー"
jar
- Java Archive ツール」jarsigner
- JAR 署名および検証ツール」attributes(5)
のマニュアルページこのコマンドと
pack(1)
を混同しないでください。これらは別製品です。SDK に付属する Java SE API 仕様との相違が見つかった場合には、仕様を優先してください。