モジュール java.base
パッケージ java.lang

クラスRuntime

java.lang.Object
java.lang.Runtime

public class Runtime extends Object
JavaアプリケーションはすべてRuntimeクラスの単一のインスタンスを持ちます。このクラスは、アプリケーションとアプリケーション実行環境とのインタフェースになります。 現在のRuntimeオブジェクトは、getRuntimeメソッドにより取得できます。

アプリケーションは、このクラスの独自のインスタンスを生成することはできません。

停止シーケンス

Java Virtual Machineは、次のいずれかのイベントにレスポンスして「停止シーケンス」を開始します:

  1. live非デーモン・スレッドの数が初めて(JNI起動APIの次のノートを参照してください)でゼロに減少した場合
  2. Runtime.exitまたはSystem.exitメソッドが初めて呼び出されたとき、または
  3. 割り込みやシグナルがオペレーティング・システムから受信されるなどの外部イベントが発生した場合。

シャットダウン・シーケンスの開始時に、登録されたシャットダウン・フックは、指定されていない順序で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
関連項目:
  • ネストされたクラスのサマリー

    ネストされたクラス
    修飾子と型
    クラス
    説明
    static final class 
    Java SE Platformの実装用のバージョン文字列の表現。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    新しい仮想マシンのシャットダウン・フックを登録します。
    int
    Java仮想マシンが使用できるプロセッサの数を返します。
    exec(String command)
    非推奨。
    このメソッドはエラーが発生しやすく、使用しないでください。対応するメソッドexec(String[])またはProcessBuilderを代わりに使用する必要があります。
    exec(String[] cmdarray)
    指定されたコマンドと引数を、独立したプロセスで実行します。
    exec(String[] cmdarray, String[] envp)
    指定されたコマンドと引数を、指定された環境を持つ独立したプロセスで実行します。
    exec(String[] cmdarray, String[] envp, File dir)
    指定されたコマンドと引数を、指定された環境と作業ディレクトリを持つ独立したプロセスで実行します。
    exec(String command, String[] envp)
    非推奨。
    このメソッドはエラーが発生しやすく、使用しないでください。対応するメソッドexec(String[], String[])またはProcessBuilderを代わりに使用する必要があります。
    exec(String command, String[] envp, File dir)
    非推奨。
    このメソッドはエラーが発生しやすく、使用しないでください。対応するメソッド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
    load(String filename)
    filename引数によって指定されたネイティブ・ライブラリをロードします。
    void
    引数libnameによって指定されるネイティブ・ライブラリをロードします。
    long
    Java仮想マシンが使用を試みる最大メモリー容量を返します。
    boolean
    すでに登録した仮想マシンのシャットダウン・フックを登録解除します。
    void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は削除のために非推奨になりました。
    long
    Java仮想マシンのメモリーの総容量を返します。
    Java Runtime EnvironmentのバージョンをRuntime.Versionとして返します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • メソッドの詳細

    • getRuntime

      public static Runtime getRuntime()
      現在のJavaアプリケーションに関連したRuntimeオブジェクトを返します。 Runtimeクラスのメソッドのほとんどはインスタンス・メソッドであり、現在のランタイム・オブジェクトに対応して呼び出されなければいけません。
      戻り値:
      現在のJavaアプリケーションに関連したRuntimeオブジェクト。
    • exit

      public void exit(int status)
      Java Virtual Machineの「停止シーケンス」を開始します。 このメソッドは無期限にブロックし、例外(つまり、通常または突然完了しません)を返したりスローしたりすることはありません。 引数はステータス・コードとして作用します。通例、ゼロ以外のステータス・コードは異常終了を示します。

      このメソッドの呼出しは、1つの呼出しのみが実際に停止シーケンスを続行し、指定されたステータス・コードでVMを終了するように直列化されます。 他のすべての呼出しは、無期限にブロックされます。

      このメソッドは常に無期限にブロックされるため、シャットダウン・フックから呼び出されると、シャットダウン・フックが終了しなくなります。 その結果、シャットダウン・シーケンスが終了できなくなります。

      System.exitメソッドは、このメソッドを呼び出す従来の便利な手段です。

      パラメータ:
      status - 終了ステータス。 通例、ゼロ以外のステータス・コードは異常終了を示す。
      例外:
      SecurityException - セキュリティ・マネージャが存在し、そのcheckExitメソッドが指定されたステータスで終了することを許可しない場合
      関連項目:
    • addShutdownHook

      public void addShutdownHook(Thread hook)
      新しい仮想マシンのシャットダウン・フックを登録します。

      シャットダウン・フックは初期化されただけで起動していないスレッドです。 シャットダウン・フックは「停止シーケンス」の先頭から開始されます。 シャットダウン・シーケンスが開始されると、シャットダウン・フックの登録と登録解除は許可されません。

      捕捉されない例外は、Thread.UncaughtExceptionHandlerで指定されたほかのスレッドと同様に、シャットダウン・フックで処理されます。 捕捉されない例外ハンドラが完了すると、停止フックは終了したとみなされ、捕捉されない例外をスローせずに終了したフックとは別の扱いにはなりません。

      APIのノート:
      シャットダウン・フックは仮想マシンのライフ・サイクルの微妙な時期に起動するため、コーディングする場合は気を付ける必要があります。 特に、スレッドセーフに書き込む必要があり、できるかぎりデッドロックを避ける必要があります。 また、独自のシャットダウン・フックを登録した可能性のあるサービスに盲目的に依存してはならないため、自身もシャットダウン処理中である可能性があります。 AWTイベント・ディスパッチ・スレッドなど、スレッド・ベースのその他のサービスを使用しようとすると、デッドロックが発生することがあります。

      シャットダウン・フックは迅速に終了する必要もあります。 プログラムがexit,を呼び出すと、仮想マシンはただちにシャットダウンして終了するものと見なされます。 ユーザーのログオフまたはシステムのシャットダウンが原因で仮想マシンが終了した場合、基礎となるオペレーティング・システムでは、シャットダウンと終了にかかる時間が制限されます。 したがって、シャットダウン・フック中にユーザーとの対話処理をしたり長時間の計算をすることはお薦めできません。

      パラメータ:
      hook - 初期化されているが起動していないThreadオブジェクト
      例外:
      IllegalArgumentException - 指定したフックと同じフック(==を使用した比較)がすでに登録されている場合、またはフックがすでに実行中であるかすでに実行されていると判断できる場合
      IllegalStateException - 停止シーケンスがすでに開始されている場合
      SecurityException - セキュリティ・マネージャが存在し、RuntimePermission("shutdownHooks")を拒否する場合
      導入されたバージョン:
      1.3
      関連項目:
    • removeShutdownHook

      public boolean removeShutdownHook(Thread hook)
      すでに登録した仮想マシンのシャットダウン・フックを登録解除します。 フックは==を使用して比較されます。 シャットダウン・シーケンスが開始されると、シャットダウン・フックの登録と登録解除は許可されません。
      パラメータ:
      hook - 削除するフック
      戻り値:
      指定したフックが以前に登録され、正常に登録解除された場合はtrue、それ以外の場合はfalse
      例外:
      IllegalStateException - 停止シーケンスがすでに開始されている場合
      SecurityException - セキュリティ・マネージャが存在し、RuntimePermission("shutdownHooks")を拒否する場合
      導入されたバージョン:
      1.3
      関連項目:
    • halt

      public void halt(int status)
      Java Virtual Machineをすぐに「終了」します。 終了は無条件で即時です。 このメソッドは「停止シーケンス」を開始せず、すでに進行中のシャットダウン・シーケンスが終了するまで待機しません。 このメソッドは通常は復帰しません。
      APIのノート:
      このメソッドの使用には細心の注意が必要です。 これを使用すると、停止フックによって実行されるクリーンアップ・アクションが回避または中断され、データが破損する可能性があります。 Java Virtual Machineを停止するその他の考えられる結果については、前述の「終了」セクションを参照してください。
      パラメータ:
      status - 終了ステータス。 通例、ゼロ以外のステータス・コードは異常終了を示す。 exit (同等に、System.exit)メソッドが既に呼び出されている場合、このステータス・コードはそのメソッドに渡されたステータス・コードを上書きします。
      例外:
      SecurityException - セキュリティ・マネージャが存在し、そのcheckExitメソッドが指定されたステータスで終了することを許可しない場合
      導入されたバージョン:
      1.3
      関連項目:
    • exec

      @Deprecated(since="18") public Process exec(String command) throws IOException
      非推奨。
      このメソッドはエラーが発生しやすく、使用しないでください。対応するメソッドexec(String[])またはProcessBuilderを代わりに使用する必要があります。 コマンド文字列は、空白文字のみを使用してトークンに分割されます。 ファイル名などの埋め込まれたスペースを持つ引数では、トークンに完全なファイル名が含まれていないため、問題が発生する可能性があります。
      指定された文字列コマンドを、独立したプロセスで実行します。

      これは、簡易メソッドです。 exec(command)の形式の呼び出しは、exec (command, null, null)の呼び出しとまったく同じように動作します。

      パラメータ:
      command - 指定されたシステム・コマンド。
      戻り値:
      サブプロセス管理用の新しいProcessオブジェクト
      例外:
      SecurityException - セキュリティ・マネージャが存在し、そのcheckExecメソッドがサブプロセスの作成を許可しない場合
      IOException - 入出力エラーが発生した場合
      NullPointerException - commandnullの場合
      IllegalArgumentException - commandが空の場合
      関連項目:
    • exec

      @Deprecated(since="18") public Process exec(String command, String[] envp) throws IOException
      非推奨。
      このメソッドはエラーが発生しやすく、使用しないでください。対応するメソッドexec(String[], String[])またはProcessBuilderを代わりに使用する必要があります。 コマンド文字列は、空白文字のみを使用してトークンに分割されます。 ファイル名などの埋め込まれたスペースを持つ引数では、トークンに完全なファイル名が含まれていないため、問題が発生する可能性があります。
      指定された文字列コマンドを、指定された環境を持つ独立したプロセスで実行します。

      これは、簡易メソッドです。 exec(command, envp)の形式の呼び出しは、exec (command, envp, null)の呼び出しとまったく同じように動作します。

      パラメータ:
      command - 指定されたシステム・コマンド。
      envp - 文字列の配列。サブプロセスが現在のプロセスの環境を継承する必要がある場合、name = valueまたはnullの形式の環境変数設定を持つ各要素。
      戻り値:
      サブプロセス管理用の新しいProcessオブジェクト
      例外:
      SecurityException - セキュリティ・マネージャが存在し、そのcheckExecメソッドがサブプロセスの作成を許可しない場合
      IOException - 入出力エラーが発生した場合
      NullPointerException - commandnullの場合、または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)という形式の呼び出しは、cmdarraycommand内のすべてのトークンの配列であるexec (cmdarray, envp, dir)の呼び出しとまったく同じように動作します。

      より正確には、command文字列は、コールnew StringTokenizer(command)によって作成されたStringTokenizerを使用してトークンに分割され、文字カテゴリはそれ以上変更されません。 トークナイザで生成されたトークンは、同じ順序で新規文字列配列のcmdarrayに配置されます。

      パラメータ:
      command - 指定されたシステム・コマンド。
      envp - 文字列の配列。サブプロセスが現在のプロセスの環境を継承する必要がある場合、name = valueまたはnullの形式の環境変数設定を持つ各要素。
      dir - サブプロセスの作業ディレクトリ、またはサブプロセスが現在のプロセスの作業ディレクトリを継承する必要がある場合はnull
      戻り値:
      サブプロセス管理用の新しいProcessオブジェクト
      例外:
      SecurityException - セキュリティ・マネージャが存在し、そのcheckExecメソッドがサブプロセスの作成を許可しない場合
      IOException - 入出力エラーが発生した場合
      NullPointerException - commandnullの場合、またはenvpのいずれかの要素がnullの場合
      IllegalArgumentException - commandが空の場合
      導入されたバージョン:
      1.3
      関連項目:
    • exec

      public Process exec(String[] cmdarray) throws IOException
      指定されたコマンドと引数を、独立したプロセスで実行します。

      これは、簡易メソッドです。 exec(cmdarray)の形式の呼び出しは、exec (cmdarray, null, null)の呼び出しとまったく同じように動作します。

      パラメータ:
      cmdarray - 実行するコマンドと引数を含む配列。
      戻り値:
      サブプロセス管理用の新しいProcessオブジェクト
      例外:
      SecurityException - セキュリティ・マネージャが存在し、そのcheckExecメソッドがサブプロセスの作成を許可しない場合
      IOException - 入出力エラーが発生した場合
      NullPointerException - cmdarraynullの場合、またはcmdarrayのいずれかの要素がnullの場合
      IndexOutOfBoundsException - cmdarrayが長さ0の空の配列の場合
      関連項目:
    • exec

      public Process exec(String[] cmdarray, String[] envp) throws IOException
      指定されたコマンドと引数を、指定された環境を持つ独立したプロセスで実行します。

      これは、簡易メソッドです。 exec(cmdarray, envp)の形式の呼び出しは、exec (cmdarray, envp, null)の呼び出しとまったく同じように動作します。

      パラメータ:
      cmdarray - 実行するコマンドと引数を含む配列。
      envp - 文字列の配列。サブプロセスが現在のプロセスの環境を継承する必要がある場合、name = valueまたはnullの形式の環境変数設定を持つ各要素。
      戻り値:
      サブプロセス管理用の新しいProcessオブジェクト
      例外:
      SecurityException - セキュリティ・マネージャが存在し、そのcheckExecメソッドがサブプロセスの作成を許可しない場合
      IOException - 入出力エラーが発生した場合
      NullPointerException - cmdarraynullの場合、cmdarrayのいずれかの要素がnullの場合、またはenvpのいずれかの要素がnullの場合
      IndexOutOfBoundsException - cmdarrayが長さ0の空の配列の場合
      関連項目:
    • exec

      public Process exec(String[] cmdarray, String[] envp, File dir) throws IOException
      指定されたコマンドと引数を、指定された環境と作業ディレクトリを持つ独立したプロセスで実行します。

      コマンド行のトークンを表す文字列の配列cmdarray、および環境変数の設定を表す文字列の配列envpを指定すると、このメソッドは指定されたコマンドを実行するための新しいプロセスを作成します。

      このメソッドは、cmdarrayが有効なオペレーティング・システム・コマンドであることを確認します。 どのコマンドが有効かはシステム依存ですが、コマンドは少なくともnull以外の文字列の空でないリストである必要があります。

      envpnullの場合、サブプロセスは現在のプロセスの環境設定を継承します。

      一部のオペレーティング・システムでは、プロセスを起動するために最小限のシステム依存環境変数のセットが必要となる可能性があります。 このため、指定された環境に含まれていない追加の環境変数設定をサブプロセスが継承する可能性があります。 システムに依存する環境変数の最小セットは、環境で提供されている値をオーバーライドする場合があります。

      現在、ProcessBuilder.start()は、変更された環境を持つプロセスを起動する方法として推奨されています。

      新しいサブプロセスの作業ディレクトリは、dirによって指定されます。 dirnullの場合、サブプロセスは現在のプロセスの現在の作業ディレクトリを継承します。

      セキュリティ・マネージャが存在する場合、そのcheckExecメソッドが、配列cmdarrayの最初のコンポーネントを引数に指定して呼び出されます。 これにより、SecurityExceptionがスローされる可能性があります。

      オペレーティング・システム・プロセスの起動はきわめてシステムに依存します。 発生する可能性がある不具合は次のとおりです。

      • オペレーティング・システム・プログラム・ファイルが見つからなかった。
      • プログラム・ファイルへのアクセス権が拒否された。
      • 作業ディレクトリが存在しない。

      以上のケースでは、例外がスローされます。 例外の正確な特性はシステムに依存しますが、これは常にIOExceptionのサブクラスになります。

      オペレーティング・システムがプロセスの作成をサポートしていない場合は、UnsupportedOperationExceptionがスローされます。

      パラメータ:
      cmdarray - 実行するコマンドと引数を含む配列。
      envp - 文字列の配列。サブプロセスが現在のプロセスの環境を継承する必要がある場合、name = valueまたはnullの形式の環境変数設定を持つ各要素。
      dir - サブプロセスの作業ディレクトリ、またはサブプロセスが現在のプロセスの作業ディレクトリを継承する必要がある場合はnull
      戻り値:
      サブプロセス管理用の新しいProcessオブジェクト
      例外:
      SecurityException - セキュリティ・マネージャが存在し、そのcheckExecメソッドがサブプロセスの作成を許可しない場合
      UnsupportedOperationException - オペレーティング・システムがプロセスの作成をサポートしていない場合。
      IOException - 入出力エラーが発生した場合
      NullPointerException - cmdarraynullの場合、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)
      filename引数によって指定されたネイティブ・ライブラリをロードします。 filename引数は絶対パス名である必要があります(たとえばRuntime.getRuntime().load("/home/avh/lib/libX11.so");)。 filename引数(プラットフォーム固有のライブラリ接頭辞、パス、およびファイル拡張子がすべて取り除かれている場合)が、たとえばLという名前のライブラリを示し、Lというネイティブ・ライブラリがVMと静的にリンクされている場合は、ダイナミック・ライブラリのロードを試みるのではなく、そのライブラリによってエクスポートされるJNI_OnLoad_L関数が呼び出されます。 その引数と一致するファイル名がファイル・システム内に存在する必要はありません。 詳細については、「JNI仕様」を参照してください。 それ以外の場合、filename引数は実装に依存した方法でネイティブ・ライブラリ・イメージにマップされます。

      まず、セキュリティ・マネージャが存在する場合は、checkLinkメソッドがfilenameをその引数に指定して呼び出されます。 これはセキュリティ例外となる場合があります。

      これはloadLibrary(String)メソッドと似ていますが、ライブラリ名ではなく一般的なファイル名を引数として指定できるため、ネイティブ・コードで書かれた任意のファイルがロード可能になります。

      このメソッドを呼び出すには、System.load(String)メソッドが一般的で便利です。

      パラメータ:
      filename - ロードするファイル。
      例外:
      SecurityException - セキュリティ・マネージャが存在し、そのcheckLinkメソッドが、指定されたダイナミック・ライブラリのロードを許可しない場合
      UnsatisfiedLinkError - filenameが絶対パス名でない場合、ネイティブ・ライブラリがVMと静的にリンクされていない場合、またはホスト・システムがそのライブラリをネイティブ・ライブラリ・イメージにマップできない場合。
      NullPointerException - filenamenullである場合
      関連項目:
    • loadLibrary

      public void loadLibrary(String libname)
      引数libnameによって指定されるネイティブ・ライブラリをロードします。 libname引数には、プラットフォーム固有の接頭辞、ファイル拡張子、またはパスを含めないでください。 libnameというネイティブ・ライブラリがVMと静的にリンクされている場合は、そのライブラリによってエクスポートされるJNI_OnLoad_libname関数が呼び出されます。 詳細については、「JNI仕様」を参照してください。 それ以外の場合、libname引数はシステム・ライブラリのロケーションからロードされ、実装に依存する方法でネイティブ・ライブラリ・イメージにマップされます。

      まず、セキュリティ・マネージャが存在する場合は、checkLinkメソッドがlibnameをその引数に指定して呼び出されます。 これはセキュリティ例外となる場合があります。

      このメソッドを呼び出すには、System.loadLibrary(String)メソッドが一般的で便利です。 ネイティブ・メソッドをクラスの実装で使用する場合、標準的には、ネイティブ・コードをライブラリ・ファイル(ここでは、説明上LibFileとする)に入れてから、次のstatic初期化子を、

       static { System.loadLibrary("LibFile"); }
       
      クラス宣言に入れます。 こうすれば、クラスがロードおよび初期化されるとき、ネイティブ・メソッドに必要なネイティブ・コードの実装も同じようにロードされます。

      同じライブラリ名を指定してこのメソッドを複数回呼び出しても、2回目以降の呼出しは無視されます。

      パラメータ:
      libname - ライブラリの名前。
      例外:
      SecurityException - セキュリティ・マネージャが存在し、そのcheckLinkメソッドが、指定されたダイナミック・ライブラリのロードを許可しない場合
      UnsatisfiedLinkError - libname引数にファイル・パスが含まれている場合、ネイティブ・ライブラリがVMと静的にリンクされていない場合、またはホスト・システムがそのライブラリをネイティブ・ライブラリ・イメージにマップできない場合。
      NullPointerException - libnamenullである場合
      関連項目:
    • version

      public static Runtime.Version version()
      Java Runtime EnvironmentのバージョンをRuntime.Versionとして返します。
      戻り値:
      Java Runtime EnvironmentのRuntime.Version
      導入されたバージョン:
      9