javah(1)

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

    javah は、Java クラスから C ヘッダーファイルと C ソースファイルを作成します。これらのファイルは、Java プログラミング言語で書かれたコードと、C などのその他の言語で書かれたコードを接続し、コードが相互に作用するようにします。

形式

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

説明

javah は、ネイティブメソッドを実装するために必要な C ヘッダーとソースファイルを生成します。作成されたヘッダーとソースファイルは、ネイティブソースコードからオブジェクトのインスタンス変数を参照するために C プログラムによって使用されます。.h ファイルは、対応するクラスと一致する配置を持つ構造体定義を含みます。構造体のフィールドは、クラスのインスタンス変数に対応します。

ヘッダーファイルとその中で宣言される構造体の名前はクラスの名前から派生します。javah に渡されるクラスがパッケージの中にある場合、パッケージ名はヘッダーファイル名と構造体名の両方に付加されます。下線 (_) が名前の区切り文字として使用されます。

デフォルトでは javah は、コマンド行にリストされる各クラスのヘッダーファイルを作成し、現在のディレクトリにファイルを置きます。ソースファイルを作成するには、-stubs オプションを使用してください。1 つのファイルの中に、リストされたすべてのクラスの結果を連結するには、-o オプションを使用してください。

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

javah_g は、jdb(1) のようなデバッガに適した、javah の最適化されていないバージョンです。

オプション

    -o outputfile
        コマンド行にリストされたすべてのクラスに対して、結果のヘッダーまたはソースファイルを連結して outputfile に格納します。-o または -d のどちらか一方だけが使われます。

    -d directory
        javah がヘッダーファイルまたはスタブファイルを保存する、ディレクトリを設定します。-d または -o のどちらか一方だけが使われます。

    -stubs
        javah が、Java オブジェクトファイルから C 宣言を生成します。

    -verbose
        詳細出力を指定し、作成ファイルの状態に関するメッセージを、javah が標準出力に出力します。

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

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

    -jni
        JNI 形式のネイティブファイル機能プロトタイプを含む出力ファイルを、javah が作成します。これは標準出力であるため、-jni の使用はオプションです。

    -classpath path
        クラスを探すために javah が使用するパスを指定します。デフォルトまたは CLASSPATH 環境変数設定を上書きします。ディレクトリはコロンで分割します。したがって、path の一般形式は次のようになります。

           .:<your_path>

        例を示します。

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

    便宜上、* のベース名を含むクラスパス要素は、ディレクトリ内の拡張子 .jar または .JAR を持つすべてのファイルのリストを指定するのと同じとみなされます (Java プログラムはこの 2 つの呼び出しを区別できない)。
    たとえば、ディレクトリ foo に a.jar と b.JAR が含まれている場合、クラスパス要素 foo/* は A.jar:b.JAR に展開されます。 ただし、JAR ファイルの順番は指定されません。このリストには、隠しファイルも含め、指定されたディレクトリ内のすべての JAR ファイルが含まれます。* だけから成るクラスパスエントリは、カレントディレクトリ内のすべての JAR ファイルのリストに展開されます。CLASSPATH 環境変数も、定義時には同様に展開されます。クラスパスのワイルドカード展開は必ず、Java 仮想マシンの起動前に実行されます。したがって、System.getenv("CLASSPATH") 呼び出しのように環境に問い合わせを行わない限り、Java プログラムが展開されていないワイルドカードを認識することはありません。

    -bootclasspath path
        ブートストラップクラスをロードするパスを指定します。ブートストラップクラスは、デフォルトでは jre/lib/rt.jar および他のいくつかの JAR ファイル にある、コア Java 2 プラットフォームを実装するクラスです。

    -old
        古い JDK1.0 形式のヘッダーファイルを生成するように指定します。

    -force
        出力ファイルが常に書き込まれるように指定します。

    -Joption
        Java 仮想マシンに option を渡します。 option には、java(1)のリファレンスページに記載されているオプションを 1 つ指定します。たとえば、-J-Xms48m と指定すると、スタートアップメモリーは 48M バイトに設定されます。

環境変数

    CLASSPATH
        ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで分割されています。

関連項目

javac(1)、java(1)、jdb(1)、javap(1)、javadoc(1)