javah(1) 基本ツール javah(1)

# 名前

javah - JavaクラスからCヘッダーとソース・ファイルを生成します。

# 概要

```
javah [ options ] fully-qualified-class-name ...
```

*options*

コマンド行オプション。オプションを参照してください。

*fully-qualified-class-name*

Cヘッダーとソース・ファイルに変換されるクラスの完全修飾された場所。

# 説明

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

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

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

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

# オプション

-o *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**環境変数の設定をオーバーライドします。ディレクトリはOracle Solarisの場合はコロンで、Windowsの場合はセミコロンで区切られます。パスの一般的な形式は次のようになります。

**Oracle Solaris**の場合:

.:*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 Virtual Machine (JVM)の開始前に行われます。Javaプログラムは、環境を問い合せる場合を除き、展開されていないワイルドカードを参照しません。たとえば、**System.getenv("CLASSPATH")**をコールして問い合せる場合です。

-bootclasspath *path*

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

-old

古いJDK 1.0形式のヘッダー・ファイルを生成するように指定します。

-force

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

-J*option*

Java Virtual Machineに**option**を渡します。**option**には、Javaアプリケーション起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、**-J-Xms48m**と指定すると、スタートアップ・メモリーは48MBに設定されます。[java(1)](/man/os/openjdk-8/java.1)を参照してください。

# 関連項目

•[javah(1)](/man/os/openjdk-8/javah.1)

•[java(1)](/man/os/openjdk-8/java.1)

•[jdb(1)](/man/os/openjdk-8/jdb.1)

•[javap(1)](/man/os/openjdk-8/javap.1)

•[javadoc(1)](/man/os/openjdk-8/javadoc.1)

2013年11月21日 JDK 8

---

Document: javah(1) from openjdk-8 8.504-r4 (Chainguard OS)
Source: https://github.com/openjdk/jdk8u.git
