javah(1)

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

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

形式

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

説明

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

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

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

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

オプション

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

    -ddirectory
        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仮想マシンの起動前に実行されます。したがって、環境に問合せを行わない限り、Javaプログラムが展開されていないワイルドカードを認識することはありません。たとえば、System.getenv(\"CLASSPATH\")呼出しがその例です。

    -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)