java(1)

名前
java - Java アプリケーション起動プログラム

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

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

パラメータ

options
    コマンド行オプション。

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

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

argument
    main 関数に渡される引数。

機能説明

java ツールは、Java アプリケーションを起動します。 java ツールは、Java Runtime Environment を起動したあと、指定されたクラスをロードし、このクラスの main メソッドを呼び出して Java アプリケーションを起動します。 main このメソッドは public および static で宣言され、値を返さず、パラメータとして String 配列を使用できなければなりません。 メソッド宣言は次のようにする必要があります。

   public static void main(String args[])

デフォルトでは、オプションではない最初の引数が、呼び出すクラスの名前に なります。この名前には、完全指定のクラス名を使用する必要があります。 -jar オプションを指定した場合、オプションではない最初の引数は、アプリケーションの クラスファイルとリソースファイルを含む JAR アーカイブの名前になります。 この場合、Main-Class マニフェストヘッダで指定されたクラスがスタート アップクラスになります。

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

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

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

  標準オプション

-client
    Java HotSpot Client VM を選択します。 詳細は、 http://java.sun.com/j2se/1.5.0/docs/guide/vm/server-class.html の「Server-Class Machine Detection」を参照してください。

-server
    Java HotSpot Server VM を選択します。 詳細は、 http://java.sun.com/j2se/1.5.0/docs/guide/vm/server-class.html の「Server-Class Machine Detection」を参照してください。

-agentlib:libname[=options]
    ネイティブのエージェントライブラリ libname を読み込みします。次に例を示します。

    -agentlib:hprof
    -agentlib:jdwp=help
    -agentlib:hprof=help

詳細は、 http://java.sun.com/j2se.1.5.0/docs/guide/jvmti/jvmti.html の「JVMTI Agent Command Line Options」を参照してください。

-agentpath:pathname[=options]
    ネイティブのエージェントライブラリをフルパス名を使用して読み込みします。 詳細は、 http://java.sun.com/j2se.1.5.0/docs/guide/jvmti/jvmti.html の「JVMTI Agent Command Line Options」を参照してください。

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

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

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

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

-d32

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

現時点では、64 ビット操作をサポートしているのは Java HotSpot Server VM だけであり、 -server オプションでは、 -d64 が暗黙的に使用されます。 この仕様は将来変更される場合があります。

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

-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 ファイルがすべてのユーザクラスのソースとなるため、他のユーザクラスパスの設定は無視されます。
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 アーカイブをコロンで区切ったリストを指定します。指定されたパスに 存在するブートクラスファイルは、JDK に含まれる ブートクラスファイルの代わりに使われます。 注: rt.jar 内のクラスを上書きする目的でこのオプションを 使用するアプリケーションは配備しないでください。 配備すると、Java Runtime Environment バイナリコードライセンス違反になることがあります。

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

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

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

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

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

-Xincgc
    インクリメンタルガベージコレクタを有効にします。 インクリメンタルガベージコレクタは、デフォルトでは 無効に設定されていますが、有効にするとプログラムの実行中の ガベージコレクションによる停止を防ぎます。 インクリメンタルガベージコレクタは、場合によってはプログラムと同時に 実行されます。同時に実行されている間は、プログラムで利用可能な プロセッサ能力が減少します。

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

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

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

    -Xms6291456
    -Xms6144k
    -Xms6m

-Xmxn
    メモリ割り当てプールの最大サイズをバイト単位で指定します。 指定する値は、2M バイトよりも大きな 1024 の倍数でなければなりません。 文字 k または K を付けると K バイト、文字 m または 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
    スレッドスタックサイズを設定します。 /TP -XX:+UseAltSigs VM ではデフォルトで SIGUSR1 および SIGUSR2 を使用しますが、 SIGUSR1 および SIGUSR2 をシグナル連鎖するアプリケーションと 競合する場合があります。 -XX:+UseAltSigs オプションは、VM にデフォルトとして SIGUSR1 と SIGUSR2 以外のシグナルを使用させます。

関連項目
javac(1), jdb(1), javah(1), jar(1),

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

The Java Extensions Framework @
    http://java.sun.com/j2se/1.5.0/docs/guide/extensions/index.html

Security Features @
    http://java.sun.com/j2se/1.5.0/docs/guide/security/index.html