javah(1)

名前
javah - C 言語のヘッダとスタブファイルのジェネレータ

形式
javah [ options ] fully-qualified-classname . . .
javah_g [ options ] fully-qualified-classname . . .

機能説明
javah コマンドは、ネイティブメソッドを実装するのに必要な C 言語のヘッダおよびソースファイルを生成します。 C のプログラムは、 生成されたヘッダとソースファイルを使って、 ネイティブソースコードからオブジェクトのインスタンス 変数を参照できます。 .h ファイルは、対応するクラスに合ったレイアウトの 構造体定義を含んでいます。 構造体に含まれるフィールドは、クラス内のインスタンス変数に 対応しています。

ヘッダファイル名およびヘッダファイル中で定義される構造体名は、 クラス名から派生します。 javah に渡されるクラスがパッケージ内部にあれば、 そのパッケージ名がファイル名および構造体名の先頭に付加されます。 名前の間は下線 (_) で区切られます。

デフォルトでは、 javah はコマンド行で指定された個々のクラスに対して ヘッダファイルを作成し、現在のディレクトリに出力します。 -stubs オプションを指定するとソースファイルが生成されます。 -o オプションを指定すると、指定した全クラスに対する出力ファイル を連結して 1 個のファイルとして生成します。

新しいネイティブメソッドインタフェースの Java Native Interface (JNI) は、ヘッダ情報やスタブファイルを必要としません。 ただし javah コマンドは現在も JNI 形式のネイティブメソッドに必要な ネイティブメソッド関数プロトタイプを生成できます。 javah はデフォルトで JNI 形式で出力し、その結果を .h ファイルに格納します。

javah_g は非最適化バージョンの javah で、 jdb などのデバッガ用の使用に適しています。

オプション
以下のオプションが使用できます。

-bootclasspath path
    bootstrap クラスをロードするパスを指定します。デフォルトでは、bootstrap クラスはコアとなる Java プラットフォームを実装するクラスで、 jre/lib/rt.jar と jre/lib/i18n.jar にあります。

-classpath path
    javah がクラスを検索するために用いるパスを path で指定します。この指定値は、デフォルトおよび CLASSPATH 環境変数の設定値をオーバーライドします。 複数のディレクトリを指定する場合はコロンで区切ります。 したがって path の通常の形式は次のようになります。

    .:<your_path>

    パスの指定例：

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

-d directory
    javah がヘッダファイルまたはスタブファイルを書き出す ディレクトリを指定します。

-force
    常に出力ファイルに書き込むことを指定します。

-help
    javah の使用法についてヘルプメッセージを出力します。

-jni
    JNI 形式のネイティブなメソッド関数のプロトタイプが入った出力ファイルを 作成します。これはデフォルトの出力であるため、 -B -jni は省略可能です。

-o outputfile
    コマンド行で指定したすべてのクラスに対する結果のヘッダファイルまたは ソースファイルを連結し、outputfile に格納します。 -o オプションまたは -d オプションだけを使用できます。

-old
    古い JDK 1.0 形式のヘッダファイルを生成します。

-stubs
    Java オブジェクトファイルから C 言語の宣言を生成します。 -o オプションまたは -d オプションだけを使用できます。

-trace
    現在、トレースはサポートされていません。Virtual Machine の -verbose:jni オプションを使用してください。

-verbose
    詳細情報の出力を要求します。 javah は、生成されたファイルの状態に関するメッセージを stdout に書き出します。

-version
    バージョン情報を出力します。

環境

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

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

関連項目
java(1)、 javac(1)、 javadoc(1)、 javap(1)、 jdb(1)