java - Java アプリケーション起動ツール

形式

    java [ options ] class [ argument ... ]
java [ options ] -jar file.jar [ argument ... ]
options
コマンド行オプション
class
呼び出されるクラスの名前
file.jar
呼び出される JAR ファイルの名前。必ず -jar とともに使用する
argument
main 関数に渡される引数

説明

java ツールは、Java アプリケーションを起動します。java ツールは、Java Runtime Environment を起動したあと、指定されたクラスをロードし、そのクラスの main メソッドを呼び出すことにより、Java アプリケーションを起動します。

このメソッドは、public および static として宣言する必要があります。また、値を返してはなりません。さらに、String 配列をパラメータとして指定できなければなりません。メソッドの宣言は、次のようになっていなければなりません。

    public static void main(String args[])
デフォルトでは、コマンド行オプション以外の最初の引数が、呼び出されるクラスの名前になります。この名前には、完全指定のクラス名を使用する必要があり ます。-jar オプションを指定した場合、コマンド行オプション以外の最初の引数が、アプリケーションのクラスファイルとリソースファイルを含む JAR アーカイブの名前になります。この場合、マニフェストの Main-Class ヘッダで指定されたクラスが起動クラスになります。

Java Runtime は、起動クラスと使用されるその他のクラスを、ブートストラップクラスパス、インストール済みの拡張機能、およびユーザクラスパスという 3 種類の位置から検索します。

クラス名または JAR ファイル名のあとにある、コマンド行オプション以外の引数は、main 関数に渡されます。

オプション

起動ツールには、現在の実行環境および将来のリリースでサポートされる標準オプションが あります。また、仮想マシンの現在の実装では、非標準オプションのセットもサポートされます。こ れは、将来のリリースで変更される可能性があります。

標準オプション

-client
Java HotSpot Client VM を選択します。

詳細については、「サーバ - クラスマシンの検出」を参照してください。

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

詳細については、「サーバ - クラスマシンの検出」を参照してください。

-agentlib:libname[=options]
ネイティブエージェントライブラリ libname をロードします。たとえば次のように指定します。

-agentlib:hprof

-agentlib:jdwp=help

-agentlib:hprof=help

詳細については、「JVMTI エージェントのコマンド行オプション」を参照してください。

-agentpath:pathname[=options]
フルパス名を使用して、ネーティブエージェントライブラリをロードします。詳細については、「JVMTI エージェントのコマンド行オプション」を 参照してください。

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

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

クラスパスの詳細は、「クラスパスの設定」を参照してください。

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

-d32
-d64
プログラムを 32 ビット環境で実行するか、64 ビット環境で実行するか (利用可能な場合) を指定します。

現在のところ、Java HotSpot Server VM だけが 64 ビットの操作をサポートしており、-server オプションを使用する場合は、-d64 も一緒に使用する必要があります。この仕様は、将来のリリースでは変更になる可能性があります。

-d32-d64 がどちらも指定されていない場合は、デフォルトとして、64 ビット専用システムを除き 32 ビット環境で実行されます。この仕様は、将来のリリースでは変更になる可能性があります。

-enableassertions[:<package name>"..."| :<class name> ]
-ea[:<package name>"..."| :<class name> ]
アサーションを有効にします。アサーションは、デフォルトでは無効になっています。

引数なしの enableassertions または -ea を指定すると、アサーションが有効になります。「...」で終わる引数を 1 つ指定すると、指定したパッケージとそのサブパッケージ内でアサーションが有効になります。引数として「...」だけを指定すると、現 在の作業ディレクトリにある名前のないパッケージ内でアサーションが有効になります。「...」で終わらない引数を 1 つ指定すると、指定したクラス内でアサーションが有効になります。

単一コマンド行にこれらのスイッチのインスタンスを複数指定した場合は、指定したスイッチが順番に処理されてからクラスがロードされま す。したがって、たとえば、パッケージ com.wombat.fruitbat (サブパッケージを含む) 内でのみアサーションを有効にしてプログラムを実行するには、次のようなコマンドを使用します。

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 内ではアサーションを無効にしたうえで、プログラムを実行するには、次のようなコマンドを使用します。

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 ツールのリファレンスページと、Java チュートリアルの「Trail: Jar Files」を参照してください。

このオプションを使用すると、指定した JAR ファイルがすべてのユーザクラスのソースになり、ユーザクラスパスのほかの設定は無視されます。

「java -jar」オプションで実行できる JAR ファイルは、実行権限のセットを保持しています。このため、「java -jar」を使用しないで実行することも可能です。「Java Archive (JAR) ファイル」を参照してください。

-javaagent:jarpath[=options]
Java プログラミング言語エージェントをロードします。java.lang.instrument を参照してください。

-verbose
-verbose:class
クラスがロードされるたびにクラスに関する情報を表示します。

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

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

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

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

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

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

非標準オプション

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

-Xbatch
バックグラウンドコンパイルを無効にします。通常、VM では、バックグラウンドコンパイルが終了するまで、メソッドをバックグラウンドタスクとしてコンパイルし、インタプリタモードでメソッドを実行します。-Xbatch フラグを指定すると、バックグラウンドコンパイルが無効になり、すべてのメソッドのコンパイルが完了するまでフォアグラウンドタスクとして処理されます。

-Xdebug
JVMDI のサポートを有効にして開始します。JVMDI は推奨されていません。また、J2SE 5.0 でのデバッグには使用されません。したがって、J2SE 5.0 でのデバッグには、このオプションは必要ありません。

-Xbootclasspath:bootclasspath
ブートクラスファイルを探すディレクトリ、JAR アーカイブ、および ZIP アーカイブをコロンで区切ったリストで指定します。指定したパスに存在するブートクラスファイルが、Java 2 SDK に含まれるブートクラスファイルの代わりに使用されます。注: rt.jar 内のクラスをオーバーライドする目的でこのオプションを使用するアプリケーションは、システムに配置しないでください。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 仮想マシンは JNI 要求を処理する前に、JNI 関数に渡されるパラメータと、実行環境のデータを検証します。無効なデータが見つかった場合は、ネイティブコードに問題があることを示しているため、 Java 仮想マシンは致命的エラーを発生して終了します。このオプションを使用すると、パフォーマンス低下が予想されます。

-Xfuture
クラスとファイルの形式を厳密にチェックします。下位互換性を保つため、Java 2 SDK の仮想マシンが実行するデフォルトの形式チェックは、JDK ソフトウェアのバージョン 1.1.x が実行するチェックと同程度の厳密さになっています。-Xfuture フラグを指定すると、クラスファイル形式の仕様への準拠を強化するためのより厳密なチェックが有効になります。Java アプリケーション起動ツールの将来のリリースでは、より厳密なチェックがデフォルトになるため、新しいコードを開発するときにはこのフラグを使用すること をお勧めします。

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

-Xincgc
インクリメンタルガベージコレクタを有効にします。インクリメンタルガベージコレクタは、デフォルトでは無効になっています。有効にすると、プログラムの 実行中にガベージコレクションによる一時停止の発生を抑えることができます。インクリメンタルガベージコレクタは、プログラムと同時に実行することがあ り、この場合、プログラムの利用できるプロセッサ能力が低下します。

-Xloggc:file
-verbose:gc と同様にガベージコレクションイベントが発生するたびに報告しますが、そのデータを file に記録します。-verbose:gc を指定したときに報告される情報のほかに、報告される各イベントの先頭に、最初のガベージコレクションイベントからの経過時間 (秒単位) が付け加えられます。

ネットワークの応答時間によって JVM の実行速度が低下するのを避けるため、このファイルの格納先は、常にローカルファイルシステムにしてください。ファイルシステムが満杯になると、ファイル は切り捨てられ、そのファイルにデータが引き続き記録されます。このオプションと -verbose:gc の両方がコマンド行に指定されている場合は、このオプションが優先されます。

-Xmsn
メモリ割り当てプールの初期サイズをバイト数で指定します。指定する値は、1M バイトより大きい 1024 の倍数にしなければなりません。キロバイトを指定するには、文字 k または K を付けます。メガバイトを指定するには、文字 m または M を付けます。既定値は 2M バイトです。次に例を示します。
       -Xms6291456
-Xms6144k
-Xms6m

-Xmxn
メモリ割り当てプールの最大サイズをバイト数で指定します。指定する値は、2M バイトより大きい 1024 の倍数にしなければなりません。キロバイトを指定するには、文字 k または K を付けます。メガバイトを指定するには、文字 m または M を付けます。既定値は 64M バイトです。次に例を示します。
       -Xmx83886080
-Xmx81920k
-Xmx80m
Solaris 7 および Solaris 8 SPARC プラットフォームでは、この値のおよその上限は、4000m からオーバーヘッドの量を差し引いたサイズになります。Solaris 2.6 および x86 プラットフォームでは、およその上限は、2000m からオーバーヘッドの量を差し引いたサイズになります。Linux プラットフォームでは、およその上限は、2000m からオーバーヘッドの量を差し引いたサイズになります。

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

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

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

以前のリリースでは、Java アプリケーションを秩序正しくシャットダウンするためのシャットダウンフック機能が追加されました。この機能により、JVM が突然終了した場合でも、シャットダウン時にユーザクリーンアップコード (データベース接続のクローズなど) を実行できるようになりました。

Sun の JVM は、シグナルをキャッチすることによって、JVM の異常終了のためのシャットダウンフックを実装します。JVM は、SIGHUP、SIGINT、および SIGTERM を使用して、シャットダウンフックの実行を開始します。

JVM は、デバッグの目的でスレッドスタックをダンプするという、1.2 より前からある機能を実現するためにも、同様の機構を使用します。Sun の JVM は、スレッドダンプを実行するために SIGQUIT を使用します。

JVM を埋め込んでいるアプリケーションが SIGINT や SIGTERM などのシグナルを頻繁にトラップする必要があると、JVM そのもののシグナルハンドラの処理に支障が出る可能性があります。-Xrs コマンド行オプションを使用すると、この問題に対処できます。Sun の JVM に対して -Xrs を使用すると、SIGINT、SIGTERM、SIGHUP、および SIGQUIT に対するシグナルマスクは JVM によって変更されず、これらのシグナルに対するシグナルハンドラはインストールされません。

-Xrs を指定した場合、次の 2 つの影響があります。

  • SIGQUIT によるスレッドダンプを利用できない
  • シャットダウンフック処理の実行は、JVM が終了しようとしている時点で System.exit() を呼び出すなどして、ユーザコード側で行う必要がある

-Xssn
スレッドのスタックサイズを設定します。

-XX:+UseAltSigs
VM はデフォルトで SIGUSR1 および SIGUSR2 を使用します。このため、SIGUSR1 および SIGUSR2 をシグナル連鎖するアプリケーションと競合することがあります。-XX:+UseAltSigs オプションを使用すると、VM はデフォルトで、SIGUSR1 および SIGUSR2 以外のシグナルを使うようになります。

関連項目


Copyright © 2002-2004 Sun Microsystems, Inc.All Rights Reserved.

Sun
Java ソフトウェア