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 ファイルに格納されます。
.:<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") を呼び出すことで。
.:/home/avh/classes:/usr/local/java/classes