java(1)

名前
java - Java インタプリタ

形式
java [ options ] class [ argument ... ]

java [ options ] -jar file.jar
[ argument ... ]

パラメータ
オプションの指定順序は任意です。特定のオプションに適用されるパラメータ については、以下の「オプション」節を参照してください。

options
    コマンド行オプション。以下の「オプション」節を参照

class
    呼び出されるクラスの名前

file.jar
    呼び出されるファイルの名前。必ず -jar と同時に使用される

機能説明

java ツールは、Java アプリケーションを起動します。 java ツールは、Java Runtime Environment を起動したあと、指定されたクラスをロードし、このクラスの main メソッドを呼び出して Java アプリケーションを起動します。 main メソッドは次のシグニチャを持っていなければなりません。

   public static void main(String args[])

このメソッドは public および static で宣言され、値を返さず、パラメータとして String 配列を使用できなければなりません。 デフォルトでは、オプションではない最初の引数が、呼び出すクラスの名前に なります。この名前には、完全指定のクラス名を使用する必要があります。 -jar オプションを指定した場合、オプションではない最初の引数は、アプリケーションの クラスファイルとリソースファイルを含む JAR アーカイブの名前になります。 この場合、Main-Class マニフェストヘッダで指定されたクラスがスタート アップクラスになります。

Java Runtime は、ブートストラップクラスパス、インストール型拡張機能、 およびユーザクラスパスの 3 つの場所から、起動クラスとその他の 使用するクラスを探します。

クラス名または JAR ファイル名のあとにあるオプションではない引数は、 main 関数に渡されます。

オプション
起動コマンドには、現在の実行環境および将来のリリースでサポートされる 標準オプションがあります。ただし以下で説明するように、別のオプションに 置き換えられたオプションは現在では使われておらず、将来のリリース では削除される予定です。このほかの非標準オプションは、 現在の Virtual Machine 実装に固有のオプションで、将来変更される 可能性があります。非標準オプションは -X で始まります。

  標準オプション

-client
    Java HotSpot Client VM を選択します。これがデフォルトです。

-server
    Java HotSpot Server VM を選択します。

-classpath classpath
-cp classpath
    クラスファイルを探すディレクトリ、JAR アーカイブ、および ZIP アーカイブのリストを指定します。クラスパスの各エントリはコロン (:) で区切ります。 -classpath または -cp を指定すると、これらのオプションの値によって CLASSPATH 環境変数の設定は上書きされます。

    java で -classpath または -cp を使う場合、これらのオプションによって指定されるのはユーザクラスの クラスパスだけです。 -classpath または -cp を使う場合、これらのオプションによって指定されるのは、ユーザクラスと ブートストラップクラスの両方のクラスパスです。

    -classpath と -cp を使用せず、 CLASSPATH も設定されていない場合、ユーザクラスパスは現在のディレクトリ (.) になります。

-debug
    -Xdebug に置き換わりました。

-Dproperty=value
    システムプロパティの値を設定します。

-enableassertions :<package name>... |:<class name>
-ea :<package name>... |:<class name>
    表明を有効にします。デフォルトで、表明は無効です。

    引数を指定しなくても、 enableassertions または -ea で表明が有効になります。 「...」で終わる引数を 1 つ指定すると、 スイッチにより、指定したパッケージおよびすべての サブパッケージ内の表明が有効になります。 「...」という引数を指定すると、スイッチにより、 現在の作業用ディレクトリ内にある名前のないパッケージ内の 表明が有効になります。 「...」で終わらない引数を 1 つ指定すると、 スイッチにより、指定したクラス内の表明が有効になります。

    1 行のコマンドに、これらのスイッチの複数のインスタンスが 含まれている場合、クラスを読み込む前に、正しく処理されます。 たとえば、パッケージ com.wombat.fruitbat
     (およびすべてのサブパッケージ) 内だけの有効な表明を 含んだプログラムを実行する場合、次のコマンドを使用できます。

    example% java -ea:com.wombat.fruitbat... <Main Class>

    -enableassertions および -ea スイッチは、すべての クラスローダおよびシステムクラス (クラスローダを持たない) に適用されます。 この規則には 1 つ例外があります。引数がない形式の場合、 スイッチはシステムに適用されません。これを利用して、簡単に、 システムクラスを除くすべてのクラスの表明を有効にすることができます。 すべてのシステムクラスの表明を有効にする個別のスイッチも 用意されています。 -enablesystemassertions を参照してください。

-disableassertions :<package name>... |:<class name>
-da :<package name>... |:<class name>
    表明を無効にします。これはデフォルトです。

    引数を指定せずに、 disableassertions または -da で表明を無効にします。 「...」で終わる引数を 1 つ指定すると、 スイッチにより、指定したパッケージおよびすべての サブパッケージ内の表明が無効になります。 「...」という引数を指定すると、スイッチにより、現在の作業用 ディレクトリ内にある名前のないパッケージ内の表明が無効に なります。「...」で終わらない引数を 1 つ指定すると、スイッチにより、 指定したクラス内の表明が無効になります。

    パッケージ com.wombat.fruitbat の表明は有効に、クラス com.wombat.fruitbat.Brickbat の表明は無効にしてプログラムを実行するには、 次のコマンドを使用します。

    example% java -ea:com.wombat.fruitbat... -da:com.wombat.fruitbat.Brickbat <Main Class>

    -disableassertions および -da スイッチは、すべての クラスローダおよびシステムクラス (クラスローダを持たない) に適用されます。 この規則には 1 つ例外があります。 引数を持たない形式の場合、スイッチはシステムに適用されません。 これを利用して、簡単に、 システムクラスを除くすべてのクラス内の表明を有効にすることができます。 すべてのシステムクラス内内の表明を有効にする個別のスイッチも 用意されています。 -disablesystemassertions を参照してください。

-enablesystemassertions
-esa
    すべてのシステムクラスの表明を有効にします (システムクラスの デフォルトの表明ステータスを true に設定します)。

-disablesystemassertions
-dsa
    すべてのシステムクラスの表明を無効にします。

-jar
    JAR の中にカプセル化されたプログラムを実行します。最初の引数は、起動クラスの名前ではなく、JAR アーカイブファイルの名前になります。 このオプションが動作するためには、JAR ファイルのマニフェストに形式 Main-Class:classname の行が入っていなければなりません。 classname は、ユーザのアプリケーションの開始点となる public static void main(String[] args) メソッドを持つクラスを識別します。Jar ファイルと Jar ファイルのマニフェストを扱う方法については、Jar ツールのリファレンスページと「Java Tutorial」の「Jar Files」を参照してください。このオプションを使用するときは、JAR ファイルがすべてのユーザクラスのソースとなるため、他のユーザクラスパスの設定は無視されます。

-noclassgc
    -Xnoclassgc に置き換わりました。
-msh
    -Xms n に置き換わりました。
-mxn
    -Xmx n に置き換わりました。
-ssn
    -Xss n に置き換わりました。
-verbose
-verbose:class
    クラスがロードされるたびにクラスに関する情報を表示します。

-verbosegc
    -verbose:gc に置き換わりました。

-verbose:gc
    ガベージコレクションイベントが発生するたびに報告します。

-verbose:jni
    ネイティブメソッドおよびその他の Java Native Interface (JNI) の使用に関する 情報を報告します。

-version
    バージョン情報を表示して終了します。

-showversion
    バージョン情報を表示して、実行を継続します。

-?
-help
    使用法を表示して終了します。

-X  非標準オプションに関する情報を表示して終了します。

  非標準オプション

-Xint
    インタプリタ専用モードで動作します。ネイティブコードへのコンパイルは 無効になり、すべてのバイトコードがインタプリタによって実行されます。 Java HotSpot VM 適応型コンパイラによって得られるパフォーマンス上の 利点は、このモードでは実現されません。

-Xbootclasspath:bootclasspath
    ブートクラスファイルを探すディレクトリ、JAR アーカイブ、および ZIP アーカイブをコロンで区切ったリストを指定します。指定されたパスに 存在するブートクラスファイルは、Java 2 SDK と Java 2 Runtime Environment に含まれるブートクラスファイルの代わりに使わ れます。

-Xbootclasspath/a:path
    デフォルトのブートストラップクラスパスに追加するディレクトリ、 JAR アーカイブ、および ZIP アーカイブのパスをコロンで区切って指定します。

-Xbootclasspath/p:path
    デフォルトのブートストラップクラスパスの前に追加する ディレクトリ、 JAR アーカイブ、および ZIP アーカイブのパスをコロンで区切って指定します。 注: このオプションを、 rt.jar 内のクラスをオーバーライド する目的で使用するアプリケーションは指定しないでください。 指定すると、Java 2 Runtime Environment バイナリコードライセンス違反になることがあります。

-Xcheck:jni
    Java Native Interface (JNI) 機能に対して 追加チェックを実行します。特に、Java 仮想マシン (JVM) は JNI 要求を処理する前に、JNI 機能に渡される パラメータおよび実行環境データを検証します。 無効なデータを検出した場合、ネイティブコードに 問題があると判断し、Java 仮想マシンは 致命的なエラーで終了します。 このオプションを使用すると、 パフォーマンスが低下します。

-Xdebug
    デバッガが有効な状態で起動します。

-Xfuture
    厳密なクラスファイル形式の検査を実行します。下位互換性を維持 するため、Java 2 SDK の Virtual Machine で実行されるデフォルトの 形式検査は、JDK ソフトウェアの 1.1.x バージョンで実行される検査よりも 厳密ではありません。 -Xfuture フラグを使用すると、クラスファイル形式を より仕様に準拠したものにするための、さらに厳密なクラスファイル形式検査が 有効になります。開発者が新しいコードを開発する際には、このフラグの 使用を推奨します。Java アプリケーション起動ツールの 将来のリリースでは、より厳密な検査がデフォルトになるからです。

-Xnoclassgc
    クラスのガベージコレクションを無効にします。

-Xincgc
    インクリメンタルガベージコレクタを有効にします。 インクリメンタルガベージコレクタは、デフォルトでは無効に設定されていますが、 有効にするとプログラムの実行中に不意のガベージコレクションにより停止する事態を 防ぎます。それでも、ガベージコレクションの全体的なパフォーマンスにおいて、 約 10 % の低下を招きます。

-Xloggc: file
    -verbose:gc と同様、各ガベージコレクションイベントで レポートを作成し、このデータを file に記録します。 -verbose:gc により入手できる情報に加えて、レポートされるイベントには 最初のガベージコレクションイベントからの経過時間 (秒数) が付けられます。

    ネットワークの遅延による JVM の停止を避けるために、このファイルの 記憶域として常にローカルファイルシステムを使用します。 このファイルは、フルファイルシステムおよびロギングが不完全なファイル に追加される場合、切り詰められることがあります。 コマンド行で -verbose:gc といっしょに指定された場合、このオプションが優先されます。

-Xmsn
    メモリ割り当てプールの初期サイズを指定します。指定する値は、1000 より 大きくなければなりません。 n の単位を変更するには、K バイトには文字 k を、M バイトには文字 m を数値の後に付けます。デフォルトは 2m です。

-Xmxn
    メモリ割り当てプールの最大サイズを指定します。指定する値は、 1000 より大きくなければなりません。 n の単位を変更するには、K バイトには文字 k を、M バイトには文字 m を数値の後に付けます。 デフォルトは 64m です。 この値の上限はおよそ、SPARC プラットフォームの 場合は 4000m からオーバーヘッドの量を引いたものであり、x86 プラットフォームの場合は 2000m からオーバーヘッドの量を引いたものです。

-Xprof
    実行中のプログラムのプロファイルを生成し、プロファイリングデータを 標準出力に送ります。このオプションは、プログラム開発に役立つ ユーティリティとして提供されているもので、本番稼動システムでの使用を 目的としたものではありません。

-Xrunhprof[:help][:suboption=value,...]
    CPU、ヒープ、またはモニターのプロファイリングを有効にします。通常、このオプションのあとには、コンマで区切られた「 suboption=value 」のペアが続きます。サブオプションおよびそれらのデフォルト値の一覧を取得するには、コマンド java -Xrunhprof:help を実行します。

-Xssn
    Java スレッドはそれぞれ 2 つのスタックを持っています。1 つは Java コード用で、もう 1 つは C コード用です。 -Xss オプションは、1 つのスレッド内の C コードが使用できる最大スタックサイズを n に設定します。 java に渡されたプログラムの実行中に生成されたスレッドは それぞれ、独自の C ス タックサイズとして n を持っています。 n のデフォルトの単位はバイトで、 n は 1000 バイトよりも大きくなければなりません。

    n の意味を変更する場合、キロバイトにするには文字 k を、メガバイトにするには文字 m を追加します。デフォルトのスタックサイズは Java プラットフォームを実行している Linux オペレーティングシステムに よって決められます。

-Xrs
    Java 仮想マシン (JVM) によるオペレーティングシステムシグナルの利用 を減らします。

    Sun の JVM は、シグナルをキャッチして異常な JVM 終了 に対するシャットダウンフックを実装します。JVM は、SIGHUP、SIGINT、SIGTERM を 使用してシャットダウンフックの実行を開始します。JVM スレッドダンプの実行には、SIGQUIT を使用します。

    JVM を組み込んだアプリケーションは、SIGINT や SIGTERM のような シグナルを頻繁にトラップする必要があります。このような場合、アプリケーションの シグナルハンドラと JVM シャットダウンフック機能の間に干渉が発生する可能性が あります。

    このような干渉を避けるために、 -Xrs オプションを使用して JVM シャットダウンフック機能を無効にすることができます。 -Xrs が使用されると、SIGINT、SIGTERM、SIGHUP、および SIGQUIT のシグナルマスクは JVM によって変更されず、これらのシグナルのシグナルハンドラはインストールされません。

環境

CLASSPATH
    ユーザ定義クラスへのパスをシステムに通知するために使用します。 複数のディレクトリを指定する場合はコロンで区切ります。 次に例を示します。

    .:/home/avh/classes:/usr/local/java/classes

関連項目
javac(1)、 jdb(1)、 javac(1)、 jar(1)、 set(1)

次については、 java.sun.com を参照または検索してください。

JDK File Structure @
    http://java.sun.com/j2se/1.4/docs/tooldocs/linux/jdkfiles.html ：英語版

JAR Files @
    http://java.sun.com/docs/books/tutorial/jar/

注意事項
すべての -X オプションは流動的です。「オプション」の節で 説明しているように、いくつかの標準オプションは現在では 使われていません。