javah
ツールは、JavaクラスからCヘッダー・ファイルおよびソース・ファイルを生成する場合に使用します。
注意:
javah
ツールは、JDK 9から非推奨となり、将来のJDKリリースでは削除される可能性があります。このツールは、JDK 8でjavac
に追加された-h
オプションに置き換えられています。
形式
javah [options] fully-qualified-class-name ...
options
コマンド行オプションを指定します。「javahのオプション」を参照してください。
fully-qualified-class-name
Cヘッダー・ファイルおよびソース・ファイルに変換されるクラスの完全修飾された場所を指定します。
各クラスは、完全修飾名で指定する必要があり、オプションで先頭にモジュール名と続けてスラッシュ(/)を指定することもできます。例:
java.lang.Object
java.base/java.io.File
説明
javah
コマンドは、ネイティブ・メソッドを実装するために必要なCヘッダーおよびソース・ファイルを生成します。作成されたヘッダーとソース・ファイルは、ネイティブ・ソース・コードからオブジェクトのインスタンス変数を参照するためにCプログラムによって使用されます。.h
ファイルは、対応するクラスと一致する配置を持つstruct
定義を含みます。struct
のフィールドは、クラスのインスタンス変数に対応します。
ヘッダー・ファイルとその中で宣言される構造体の名前はクラスの名前から派生します。javah
コマンドに渡されるクラスがパッケージの内部にある場合、パッケージ名はヘッダー・ファイル名と構造体名の両方の先頭に付加されます。アンダースコア(_)が名前の区切り文字として使用されます。
デフォルトでは、javah
コマンドはコマンド行にリストされる各クラスのヘッダー・ファイルを作成し、現在のディレクトリにファイルを置きます。ソース・ファイルを作成するには、-stubs
オプションを使用してください。1つのファイルの中に、リストされたすべてのクラスの結果を連結するには、-o
オプションを使用してください。
Java Native Interface (JNI)は、ヘッダー情報やスタブ・ファイルを必要としません。引き続きjavah
コマンドを使用して、JNI形式のネイティブ・メソッドに必要なネイティブ・メソッド機能プロトタイプを生成できます。javah
コマンドは、JNI形式の出力を生成し、その結果を.h
ファイルに格納します。
javahのオプション
注意:
--
形式のオプションをサポートするツールでは、GNU形式のオプションで空白のかわりに等号(=)を使用して、オプションの名前とその値を区切ることができます。
-o outputfile
コマンド行にリストされたすべてのクラスに対して、結果のヘッダーまたはソース・ファイルを連結して出力ファイルに格納します。オプション-o
または-d
のどちらか一方のみを使用できます。
-d directory
javah
コマンドがヘッダー・ファイルまたはスタブ・ファイルを保存するディレクトリを設定します。オプション-d
または-o
のどちらか一方のみを使用できます。
-v
または-verbose
詳細出力を指定し、javah
コマンドが生成したファイルのステータスに関するメッセージをstdout
に出力するようにします。
-h
、-help
または-?
javah
の使用法についてのヘルプ・メッセージを出力します。
-version
javah
コマンドのリリース情報を出力します。
-jni
javah
コマンドがJNI形式のネイティブ・メソッド機能プロトタイプを含む出力ファイルを作成するようにします。これはデフォルトの出力であり、-jni
の使用はオプションです。
-force
出力ファイルが常に書き込まれるように指定します。
--module-path path
アプリケーション・モジュールのロード元となるパスを指定します。
--system jdk
システム・モジュールの検索場所を指定します。
--class-path path
、-classpath path
または-cp path
javah
コマンドでクラスを探すために使用するパスを指定します。デフォルトまたはCLASSPATH
環境変数(設定されている場合)をオーバーライドします。ディレクトリは、Oracle Solarisではコロンで区切り、Windowsではセミコロンで区切ります。pathの一般的な形式は次のようになります。
Oracle Solaris、LinuxおよびOS X:
:your-path
例: :/home/avh/classes:/usr/local/java/classes
Windows:
;
your-path
例: ;C:\users\dac\classes;C:\tools\java\classes
便宜上、アスタリスク(*)付きのベース名を含むクラス・パス要素は、ディレクトリ内の拡張子.jar
または.JAR
を持つすべてのファイルのリストを指定するのと同じと見なされます。
たとえば、ディレクトリmydir
にa.jar
とb.jar
が含まれている場合、クラス・パス要素mydir/*
はa.jar:b.JAR
に展開されますが、JARファイルの順番は決まっていません。このリストには、隠しファイルも含め、指定されたディレクトリ内のすべてのJARファイルが含まれます。アスタリスク(*)からなるクラス・パス・エントリは、現在のディレクトリ内のすべてのJARファイルのリストに展開されます。CLASSPATH
環境変数(定義されているとき)も同様に展開されます。クラス・パスのワイルドカード展開は、Java仮想マシン(JVM)の起動前に実行されます。System.getenv("CLASSPATH")
の呼出しなどによって環境を照会しないかぎり、Javaプログラムが展開されていないワイルドカードを認識することはありません。
-bootclasspath path
ブートストラップ・クラスをロードするパスを指定します。