クラスRuntime
Runtime
クラスの単一のインスタンスを持ちます。このクラスは、アプリケーションとアプリケーション実行環境とのインタフェースになります。 現在のRuntimeオブジェクトは、getRuntime
メソッドにより取得できます。
アプリケーションは、このクラスの独自のインスタンスを生成することはできません。
停止シーケンス
Java Virtual Machineは、次のいずれかのイベントにレスポンスして「停止シーケンス」を開始します:
- live非デーモン・スレッドの数が初めて(JNI起動APIの次のノートを参照してください)でゼロに減少した場合
Runtime.exit
またはSystem.exit
メソッドが初めて呼び出されたとき、または- 割り込みやシグナルがオペレーティング・システムから受信されるなどの外部イベントが発生した場合。
シャットダウン・シーケンスの開始時に、登録されたシャットダウン・フックは、指定されていない順序でstartedになります。 これらは、停止シーケンスの開始時にaliveであったデーモンまたは非デーモン・スレッドと同時に実行されます。
シャットダウン・シーケンスが開始されたあと、addShutdownHook
およびremoveShutdownHook
によるシャットダウン・フックの登録と登録解除は禁止されます。 ただし、新しいスレッドの作成および起動は許可されます。 新しいスレッドは、登録されたシャットダウン・フックと、すでに実行されているデーモンまたはデーモン以外のスレッドと同時に実行されます。
すべてのシャットダウン・フックが終了すると、シャットダウン・シーケンスが終了します。 この時点で、Java Virtual Machineは後述するように終了します。
たとえば、無限ループのために、1つ以上のシャットダウン・フックが終了しない可能性があります。 この場合、停止シーケンスは終了しません。 他のスレッドおよび停止フックは引き続き実行され、halt
メソッドを介してJVMを終了できます。
シャットダウン・シーケンスの開始前に、プログラムがstart
メソッドを明示的にコールしてシャットダウン・フックを開始できます。 これが発生した場合、停止シーケンスの動作は指定されません。
Java Virtual Machine終了
JVMは、停止シーケンスが終了したとき、またはhalt
が呼び出されたときに終了します。 exit
とは異なり、halt
メソッドは停止シーケンスを開始しません。
JVMが終了すると、すべてのスレッドがそれ以上のJavaコードを実行できなくなります。 これには、停止フック、デーモン・スレッドおよび非デーモン・スレッドが含まれます。 たとえば、次のようになります:
- スレッドの現在のメソッドは、通常または突然完了しません
finally
句は実行されません- 「捕捉されない例外ハンドラ」は実行されません
- try-with-resourcesでオープンされたリソースは、closedではありません
- 実装上のノート:
- 通常、ネイティブ・コードは「JNI起動API」を使用してJVMの起動と終了を制御します。 このようなネイティブ・コードは、
JNI_CreateJavaVM
関数を呼び出してJVMを起動します。 その後、ネイティブ・コードはDestroyJavaVM
関数を呼び出して、そのJVMの終了を待機します。DestroyJavaVM
関数は、live非デーモン・スレッドの数が最初にゼロになったときに停止シーケンスを開始します。 停止シーケンスが完了し、JVMが終了すると、制御はDestroyJavaVM
を起動したネイティブ・コードに戻されます。 この動作は、exit
またはhalt
メソッドとは異なります。 これらのメソッドは、通常、JVMをホストしているOSプロセスを終了し、JNI起動APIとは相互作用しません。 - Java言語仕様を参照してください:
-
「12.8 プログラム終了」
- 導入されたバージョン:
- 1.0
- 外部仕様
- 関連項目:
-
ネストされたクラスのサマリー
ネストされたクラス -
メソッドのサマリー
修飾子と型メソッド説明void
addShutdownHook
(Thread hook) 新しい仮想マシンのシャットダウン・フックを登録します。int
Java仮想マシンが使用できるプロセッサの数を返します。非推奨。指定されたコマンドと引数を、独立したプロセスで実行します。指定されたコマンドと引数を、指定された環境を持つ独立したプロセスで実行します。指定されたコマンドと引数を、指定された環境と作業ディレクトリを持つ独立したプロセスで実行します。非推奨。このメソッドはエラーが発生しやすく、使用しないでください。対応するメソッドexec(String[], String[])
またはProcessBuilder
を代わりに使用する必要があります。非推奨。このメソッドはエラーが発生しやすく、使用しないでください。対応するメソッドexec(String[], String[], File)
またはProcessBuilder
を代わりに使用する必要があります。void
exit
(int status) Java Virtual Machineの「停止シーケンス」を開始します。long
Java仮想マシン内の空きメモリーの量を返します。void
gc()
Java Virtual Machineでガベージ・コレクタを実行します。static Runtime
現在のJavaアプリケーションに関連したRuntimeオブジェクトを返します。void
halt
(int status) Java Virtual Machineをすぐに「終了」します。void
Restricted.filename引数によって指定されたネイティブ・ライブラリをロードします。void
loadLibrary
(String libname) Restricted.引数libname
によって指定されるネイティブ・ライブラリをロードします。long
Java仮想マシンが使用を試みる最大メモリー容量を返します。boolean
removeShutdownHook
(Thread hook) すでに登録した仮想マシンのシャットダウン・フックを登録解除します。void
削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。最終決定は削除のために非推奨になりました。long
Java仮想マシンのメモリーの総容量を返します。static Runtime.Version
version()
Java Runtime EnvironmentのバージョンをRuntime.Version
として返します。
-
メソッドの詳細
-
getRuntime
public static Runtime getRuntime()現在のJavaアプリケーションに関連したRuntimeオブジェクトを返します。Runtime
クラスのメソッドのほとんどはインスタンス・メソッドであり、現在のランタイム・オブジェクトに対応して呼び出されなければいけません。- 戻り値:
- 現在のJavaアプリケーションに関連した
Runtime
オブジェクト。
-
exit
public void exit(int status) Java Virtual Machineの「停止シーケンス」を開始します。 このメソッドは、停止シーケンス(まだ開始されていない場合)を開始し、無期限にブロックします。 このメソッドは例外を返したりスローしたりしません。つまり、通常どおりまたは突然完了しません。引数はステータス・コードとして機能します。 通例、ゼロ以外のステータス・コードは異常終了を示す。
このメソッドの正常な起動は、1つの起動のみが停止シーケンスを開始し、指定されたステータス・コードでVMを終了するように直列化されます。 他のすべての呼出しはアクションを実行せず、無期限にブロックします。
このメソッドの正常な起動は無期限にブロックされるため、停止フックから呼び出されると、その停止フックが終了しなくなります。 その結果、シャットダウン・シーケンスが終了できなくなります。
System.exit
メソッドは、このメソッドを呼び出す従来の便利な手段です。- 実装上のノート:
java.lang.Runtime
の「システム・ロガー」がロギング・レベルLevel.DEBUG
で有効になっている場合、Runtime.exit()
へのコールのスタック・トレースがログに記録されます。- パラメータ:
status
- 終了ステータス。 通例、ゼロ以外のステータス・コードは異常終了を示す。- 関連項目:
-
addShutdownHook
public void addShutdownHook(Thread hook) 新しい仮想マシンのシャットダウン・フックを登録します。シャットダウン・フックは初期化されただけで起動していないスレッドです。 シャットダウン・フックは「停止シーケンス」の先頭から開始されます。 シャットダウン・シーケンスが開始されると、シャットダウン・フックの登録と登録解除は許可されません。
捕捉されない例外は、
Thread.UncaughtExceptionHandler
で指定されたほかのスレッドと同様に、シャットダウン・フックで処理されます。 捕捉されない例外ハンドラが完了すると、停止フックは終了したとみなされ、捕捉されない例外をスローせずに終了したフックとは別の扱いにはなりません。- APIのノート:
- シャットダウン・フックは仮想マシンのライフ・サイクルの微妙な時期に起動するため、コーディングする場合は気を付ける必要があります。 特に、スレッドセーフに書き込む必要があり、できるかぎりデッドロックを避ける必要があります。 また、独自のシャットダウン・フックを登録した可能性のあるサービスに盲目的に依存してはならないため、自身もシャットダウン処理中である可能性があります。 AWTイベント・ディスパッチ・スレッドなど、スレッド・ベースのその他のサービスを使用しようとすると、デッドロックが発生することがあります。
シャットダウン・フックは迅速に終了する必要もあります。 プログラムが
exit
を呼び出すと、仮想マシンがすぐにシャットダウンして終了します。 ユーザーのログオフまたはシステムのシャットダウンが原因で仮想マシンが終了した場合、基礎となるオペレーティング・システムでは、シャットダウンと終了にかかる時間が制限されます。 したがって、シャットダウン・フック中にユーザーとの対話処理をしたり長時間の計算をすることはお薦めできません。 - パラメータ:
hook
- 初期化されているが起動していないThread
オブジェクト- スロー:
IllegalArgumentException
- 指定したフックと同じフック(==
を使用した比較)がすでに登録されている場合、またはフックがすでに実行中であるかすでに実行されていると判断できる場合IllegalStateException
- 停止シーケンスがすでに開始されている場合- 導入されたバージョン:
- 1.3
- 関連項目:
-
removeShutdownHook
public boolean removeShutdownHook(Thread hook) すでに登録した仮想マシンのシャットダウン・フックを登録解除します。 フックは==
を使用して比較されます。 シャットダウン・シーケンスが開始されると、シャットダウン・フックの登録と登録解除は許可されません。- パラメータ:
hook
- 削除するフック- 戻り値:
- 指定したフックが以前に登録され、正常に登録解除された場合は
true
、それ以外の場合はfalse
。 - スロー:
IllegalStateException
- 停止シーケンスがすでに開始されている場合- 導入されたバージョン:
- 1.3
- 関連項目:
-
halt
public void halt(int status) Java Virtual Machineをすぐに「終了」します。 Java Virtual Machineの終了は無条件で即時です。 このメソッドは「停止シーケンス」を開始せず、すでに進行中のシャットダウン・シーケンスが終了するまで待機しません。 このメソッドを呼び出すと、通常は戻されません。- APIのノート:
- このメソッドの使用には細心の注意が必要です。 これを使用すると、停止フックによって実行されるクリーンアップ・アクションが回避または中断され、データが破損する可能性があります。 Java Virtual Machineを停止するその他の考えられる結果については、前述の「終了」セクションを参照してください。
- パラメータ:
status
- 終了ステータス。 通例、ゼロ以外のステータス・コードは異常終了を示す。exit
(同等に、System.exit
)メソッドが既に呼び出されている場合、このステータス・コードはそのメソッドに渡されたステータス・コードを上書きします。- 導入されたバージョン:
- 1.3
- 関連項目:
-
exec
非推奨。このメソッドはエラーが発生しやすく、使用しないでください。対応するメソッドexec(String[])
またはProcessBuilder
を代わりに使用する必要があります。 コマンド文字列は、空白文字のみを使用してトークンに分割されます。 ファイル名などの埋め込まれたスペースを持つ引数では、トークンに完全なファイル名が含まれていないため、問題が発生する可能性があります。指定された文字列コマンドを、独立したプロセスで実行します。これは、簡易メソッドです。
exec(command)
形式の呼出しは、exec
(command, null, null)
の呼出しとまったく同じように動作します。- 実装上のノート:
- リファレンス実装では、作成されたプロセスのロギングを有効にできます。詳細は、
ProcessBuilder.start()
を参照してください。 - パラメータ:
command
- 指定されたシステム・コマンド。- 戻り値:
- サブプロセス管理用の新しい
Process
オブジェクト - スロー:
IOException
- 入出力エラーが発生した場合NullPointerException
-command
がnull
の場合IllegalArgumentException
-command
が空の場合- 関連項目:
-
exec
非推奨。このメソッドはエラーが発生しやすく、使用しないでください。対応するメソッドexec(String[], String[])
またはProcessBuilder
を代わりに使用する必要があります。 コマンド文字列は、空白文字のみを使用してトークンに分割されます。 ファイル名などの埋め込まれたスペースを持つ引数では、トークンに完全なファイル名が含まれていないため、問題が発生する可能性があります。指定された文字列コマンドを、指定された環境を持つ独立したプロセスで実行します。これは、簡易メソッドです。
exec(command, envp)
形式の呼出しは、exec
(command, envp, null)
の呼出しとまったく同じように動作します。- 実装上のノート:
- リファレンス実装では、作成されたプロセスのロギングを有効にできます。詳細は、
ProcessBuilder.start()
を参照してください。 - パラメータ:
command
- 指定されたシステム・コマンド。envp
- 文字列の配列。サブプロセスが現在のプロセスの環境を継承する必要がある場合、name = valueまたはnull
の形式の環境変数設定を持つ各要素。- 戻り値:
- サブプロセス管理用の新しい
Process
オブジェクト - スロー:
IOException
- 入出力エラーが発生した場合NullPointerException
-command
がnull
の場合、またはenvp
のいずれかの要素がnull
の場合IllegalArgumentException
-command
が空の場合- 関連項目:
-
exec
@Deprecated(since="18") public Process exec(String command, String[] envp, File dir) throws IOException 非推奨。このメソッドはエラーが発生しやすく、使用しないでください。対応するメソッドexec(String[], String[], File)
またはProcessBuilder
を代わりに使用する必要があります。 コマンド文字列は、空白文字のみを使用してトークンに分割されます。 ファイル名などの埋め込まれたスペースを持つ引数では、トークンに完全なファイル名が含まれていないため、問題が発生する可能性があります。指定された文字列コマンドを、指定された環境と作業ディレクトリを持つ独立したプロセスで実行します。これは、簡易メソッドです。
exec(command, envp, dir)
形式の呼出しは、exec
(cmdarray, envp, dir)
呼出しとまったく同じように動作します。cmdarray
は、command
内のすべてのトークンの配列です。より正確には、
command
文字列は、コールnew StringTokenizer(command)
によって作成されたStringTokenizer
を使用してトークンに分割され、文字カテゴリはそれ以上変更されません。 トークナイザで生成されたトークンは、同じ順序で新規文字列配列のcmdarray
に配置されます。- 実装上のノート:
- リファレンス実装では、作成されたプロセスのロギングを有効にできます。詳細は、
ProcessBuilder.start()
を参照してください。 - パラメータ:
command
- 指定されたシステム・コマンド。envp
- 文字列の配列。サブプロセスが現在のプロセスの環境を継承する必要がある場合、name = valueまたはnull
の形式の環境変数設定を持つ各要素。dir
- サブプロセスの作業ディレクトリ、またはサブプロセスが現在のプロセスの作業ディレクトリを継承する必要がある場合はnull
。- 戻り値:
- サブプロセス管理用の新しい
Process
オブジェクト - スロー:
IOException
- 入出力エラーが発生した場合NullPointerException
-command
がnull
の場合、またはenvp
のいずれかの要素がnull
の場合IllegalArgumentException
-command
が空の場合- 導入されたバージョン:
- 1.3
- 関連項目:
-
exec
public Process exec(String[] cmdarray) throws IOException 指定されたコマンドと引数を、独立したプロセスで実行します。これは、簡易メソッドです。
exec(cmdarray)
形式の呼出しは、exec
(cmdarray, null, null)
の呼出しとまったく同じように動作します。- 実装上のノート:
- リファレンス実装では、作成されたプロセスのロギングを有効にできます。詳細は、
ProcessBuilder.start()
を参照してください。 - パラメータ:
cmdarray
- 実行するコマンドと引数を含む配列。- 戻り値:
- サブプロセス管理用の新しい
Process
オブジェクト - スロー:
IOException
- 入出力エラーが発生した場合NullPointerException
-cmdarray
がnull
の場合、またはcmdarray
のいずれかの要素がnull
の場合IndexOutOfBoundsException
-cmdarray
が長さ0
の空の配列の場合- 関連項目:
-
exec
public Process exec(String[] cmdarray, String[] envp) throws IOException 指定されたコマンドと引数を、指定された環境を持つ独立したプロセスで実行します。これは、簡易メソッドです。
exec(cmdarray, envp)
形式の呼出しは、exec
(cmdarray, envp, null)
の呼出しとまったく同じように動作します。- 実装上のノート:
- リファレンス実装では、作成されたプロセスのロギングを有効にできます。詳細は、
ProcessBuilder.start()
を参照してください。 - パラメータ:
cmdarray
- 実行するコマンドと引数を含む配列。envp
- 文字列の配列。サブプロセスが現在のプロセスの環境を継承する必要がある場合、name = valueまたはnull
の形式の環境変数設定を持つ各要素。- 戻り値:
- サブプロセス管理用の新しい
Process
オブジェクト - スロー:
IOException
- 入出力エラーが発生した場合NullPointerException
-cmdarray
がnull
の場合、cmdarray
のいずれかの要素がnull
の場合、またはenvp
のいずれかの要素がnull
の場合IndexOutOfBoundsException
-cmdarray
が長さ0
の空の配列の場合- 関連項目:
-
exec
public Process exec(String[] cmdarray, String[] envp, File dir) throws IOException 指定されたコマンドと引数を、指定された環境と作業ディレクトリを持つ独立したプロセスで実行します。コマンド行のトークンを表す文字列の配列
cmdarray
、および環境変数の設定を表す文字列の配列envp
を指定すると、このメソッドは指定されたコマンドを実行するための新しいプロセスを作成します。このメソッドは、
cmdarray
が有効なオペレーティング・システム・コマンドであることを確認します。 どのコマンドが有効かはシステム依存ですが、コマンドは少なくともnull以外の文字列の空でないリストである必要があります。envp
がnull
の場合、サブプロセスは現在のプロセスの環境設定を継承します。一部のオペレーティング・システムでは、プロセスを起動するために最小限のシステム依存環境変数のセットが必要となる可能性があります。 このため、指定された環境に含まれていない追加の環境変数設定をサブプロセスが継承する可能性があります。 システムに依存する環境変数の最小セットは、環境で提供されている値をオーバーライドする場合があります。
現在、
ProcessBuilder.start()
は、変更された環境を持つプロセスを起動する方法として推奨されています。新しいサブプロセスの作業ディレクトリは、
dir
によって指定されます。dir
がnull
の場合、サブプロセスは現在のプロセスの現在の作業ディレクトリを継承します。オペレーティング・システム・プロセスの起動はきわめてシステムに依存します。 発生する可能性がある不具合は次のとおりです。
- オペレーティング・システム・プログラム・ファイルが見つからなかった。
- プログラム・ファイルへのアクセス権が拒否された。
- 作業ディレクトリが存在しない。
以上のケースでは、例外がスローされます。 例外の正確な特性はシステムに依存しますが、これは常に
IOException
のサブクラスになります。オペレーティング・システムがプロセスの作成をサポートしていない場合は、
UnsupportedOperationException
がスローされます。- 実装上のノート:
- リファレンス実装では、作成されたプロセスのロギングを有効にできます。詳細は、
ProcessBuilder.start()
を参照してください。 - パラメータ:
cmdarray
- 実行するコマンドと引数を含む配列。envp
- 文字列の配列。サブプロセスが現在のプロセスの環境を継承する必要がある場合、name = valueまたはnull
の形式の環境変数設定を持つ各要素。dir
- サブプロセスの作業ディレクトリ、またはサブプロセスが現在のプロセスの作業ディレクトリを継承する必要がある場合はnull
。- 戻り値:
- サブプロセス管理用の新しい
Process
オブジェクト - スロー:
UnsupportedOperationException
- オペレーティング・システムがプロセスの作成をサポートしない場合。IOException
- 入出力エラーが発生した場合NullPointerException
-cmdarray
がnull
の場合、cmdarray
のいずれかの要素がnull
の場合、またはenvp
のいずれかの要素がnull
の場合IndexOutOfBoundsException
-cmdarray
が長さ0
の空の配列の場合- 導入されたバージョン:
- 1.3
- 関連項目:
-
availableProcessors
public int availableProcessors()Java仮想マシンが使用できるプロセッサの数を返します。この値は、仮想マシンの呼出し中に変更される可能性があります。 このため、利用可能なプロセッサ数に影響を受けるアプリケーションは、このプロパティをときどきポーリングして、リソース使用法を調整する必要があります。
- 戻り値:
- 仮想マシンから利用可能な最大プロセッサ数。この値が1より小さくなることはない
- 導入されたバージョン:
- 1.4
-
freeMemory
public long freeMemory()Java仮想マシン内の空きメモリーの量を返します。gc
メソッドを呼び出すと、freeMemory
から返される値が増える可能性があります- 戻り値:
- 将来割り当てられるオブジェクトに利用可能な現在のメモリーの総容量(バイト単位)
-
totalMemory
public long totalMemory()Java仮想マシンのメモリーの総容量を返します。 ホストの環境によっては、このメソッドによって返される値が時間とともに変化する場合があります。任意の指定された型のオブジェクトを格納するのに必要なメモリー容量は、実装によって異なります。
- 戻り値:
- 現在および将来のオブジェクトに利用可能な現在のメモリーの総容量(バイト単位)。
-
maxMemory
public long maxMemory()Java仮想マシンが使用を試みる最大メモリー容量を返します。 固有の制限が存在しない場合、値Long.MAX_VALUE
が返されます。- 戻り値:
- 仮想マシンが使用を試みる最大メモリー容量(単位はバイト)
- 導入されたバージョン:
- 1.4
-
gc
public void gc()Java Virtual Machineでガベージ・コレクタを実行します。このメソッドを呼び出すことで、Java Virtual Machineが現在使用中のメモリーをJava Virtual Machineで再利用できるようにするために、使用されていないオブジェクトをリサイクルする手間がかかります。 制御がメソッド・コールから戻ると、Java Virtual Machineは、未使用のすべてのオブジェクトから領域を再利用するためのベスト・エフォートをしました。 この労力が特定の数の未使用オブジェクトをリサイクルしたり、一定の量の領域を再利用したり、一度に完了しても、メソッドが復帰するか、または必ずメソッドが戻ることは保証されません。 また、この作業によって、特定の数のオブジェクトにおける到達可能性の変更、または特定の数の
Reference
オブジェクトがクリアされてエンキューされるという保証はありません。gc
というメソッド名は「garbage collector」の頭字をとったものです。 Java Virtual Machineでは、gc
メソッドが明示的に起動されていない場合でも、必要に応じて個別のスレッドでこのリサイクル・プロセスが自動的に実行されます。このメソッドを呼び出すには、
System.gc()
メソッドが一般的で便利です。 -
runFinalization
@Deprecated(since="18", forRemoval=true) public void runFinalization()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。最終決定は削除のために非推奨になりました。 移行オプションについてのバックグラウンド情報および詳細は、Object.finalize()
を参照してください。ファイナライズが無効または削除されているJVMで実行する場合、オブジェクトはファイナライズを保留しないため、このメソッドは何もしません。
ファイナライズを保留しているオブジェクトのファイナライズ・メソッドを実行します。 このメソッドを呼び出すと、Java仮想マシンは、破棄されたにもかかわらずfinalize
メソッドが実行されていないオブジェクトのfinalize
メソッドを実行しようとします。 メソッド呼び出しから制御が戻された時点で、仮想マシンはすべてのファイナライズを完了するよう最善を尽くしたことになります。runFinalization
メソッドが明示的には呼び出されなかった場合でも、仮想マシンはこのファイナライズ・プロセスを必要に応じて自動的に、別のスレッドで実行します。このメソッドを呼び出すには、
System.runFinalization()
メソッドが一般的で便利です。- Java言語仕様を参照してください:
-
12.6 クラス・インスタンスのファイナライズ
- 関連項目:
-
load
public void load(String filename) load
は、Javaプラットフォームの制限付きメソッドです。プログラムは、制限付きメソッドへのアクセスが有効になっている場合にのみload
を使用できます。制限されたメソッドは安全ではありません。不適切に使用した場合、JVMがクラッシュまたはメモリーが破損する場合があります。filename引数によって指定されたネイティブ・ライブラリをロードします。 filename引数は絶対パス名である必要があります(たとえばRuntime.getRuntime().load("/home/avh/lib/libX11.so");
)。 filename引数(プラットフォーム固有のライブラリ接頭辞、パス、およびファイル拡張子がすべて取り除かれている場合)が、たとえばLという名前のライブラリを示し、Lというネイティブ・ライブラリがVMと静的にリンクされている場合は、ダイナミック・ライブラリのロードを試みるのではなく、そのライブラリによってエクスポートされるJNI_OnLoad_L関数が呼び出されます。 その引数と一致するファイル名がファイル・システム内に存在する必要はありません。 詳細については、「JNI仕様」を参照してください。 それ以外の場合、filename引数は実装に依存した方法でネイティブ・ライブラリ・イメージにマップされます。これはメソッド
loadLibrary(String)
RESTRICTEDと似ていますが、ライブラリ名ではなく引数として一般的なファイル名を受け入れ、ネイティブ・コードの任意のファイルをロードできます。メソッド
System.load(String)
RESTRICTEDは、このメソッドを呼び出す従来の便利な方法です。- パラメータ:
filename
- ロードするファイル。- スロー:
UnsatisfiedLinkError
- filenameが絶対パス名でない場合、ネイティブ・ライブラリがVMと静的にリンクされていない場合、またはホスト・システムがそのライブラリをネイティブ・ライブラリ・イメージにマップできない場合。NullPointerException
-filename
がnull
である場合IllegalCallerException
- 呼び出し元が、ネイティブ・アクセスが有効になっていないモジュール内にある場合。- 外部仕様
- 関連項目:
-
loadLibrary
public void loadLibrary(String libname) loadLibrary
は、Javaプラットフォームの制限付きメソッドです。プログラムは、制限付きメソッドへのアクセスが有効になっている場合にのみloadLibrary
を使用できます。制限されたメソッドは安全ではありません。不適切に使用した場合、JVMがクラッシュまたはメモリーが破損する場合があります。引数libname
によって指定されるネイティブ・ライブラリをロードします。libname
引数には、プラットフォーム固有の接頭辞、ファイル拡張子、またはパスを含めないでください。libname
というネイティブ・ライブラリがVMと静的にリンクされている場合は、そのライブラリによってエクスポートされるJNI_OnLoad_libname
関数が呼び出されます。 詳細については、「JNI仕様」を参照してください。 それ以外の場合、libname引数はシステム・ライブラリのロケーションからロードされ、実装に依存する方法でネイティブ・ライブラリ・イメージにマップされます。メソッド
System.loadLibrary(String)
RESTRICTEDは、このメソッドを呼び出す従来の便利な方法です。 ネイティブ・メソッドをクラスの実装で使用する場合、標準的には、ネイティブ・コードをライブラリ・ファイル(ここでは、説明上LibFile
とする)に入れてから、次のstatic初期化子を、
クラス宣言に入れます。 こうすれば、クラスがロードおよび初期化されるとき、ネイティブ・メソッドに必要なネイティブ・コードの実装も同じようにロードされます。static { System.loadLibrary("LibFile"); }
同じライブラリ名を指定してこのメソッドを複数回呼び出しても、2回目以降の呼出しは無視されます。
- パラメータ:
libname
- ライブラリの名前。- スロー:
UnsatisfiedLinkError
- libname引数にファイル・パスが含まれている場合、ネイティブ・ライブラリがVMと静的にリンクされていない場合、またはホスト・システムがそのライブラリをネイティブ・ライブラリ・イメージにマップできない場合。NullPointerException
-libname
がnull
である場合IllegalCallerException
- 呼び出し元が、ネイティブ・アクセスが有効になっていないモジュール内にある場合。- 外部仕様
-
version
public static Runtime.Version version()Java Runtime EnvironmentのバージョンをRuntime.Version
として返します。- 戻り値:
- Java Runtime Environmentの
Runtime.Version
- 導入されたバージョン:
- 9
-
exec(String[])
またはProcessBuilder
を代わりに使用する必要があります。