1 '\" t
   2 .\"
   3 .\" Copyright 2000-2006 Sun Microsystems, Inc.  All Rights Reserved.
   4 .\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   5 .\"
   6 .\" This code is free software; you can redistribute it and/or modify it
   7 .\" under the terms of the GNU General Public License version 2 only, as
   8 .\" published by the Free Software Foundation.
   9 .\"
  10 .\" This code is distributed in the hope that it will be useful, but WITHOUT
  11 .\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  12 .\" FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  13 .\" version 2 for more details (a copy is included in the LICENSE file that
  14 .\" accompanied this code).
  15 .\"
  16 .\" You should have received a copy of the GNU General Public License version
  17 .\" 2 along with this work; if not, write to the Free Software Foundation,
  18 .\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  19 .\"
  20 .\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  21 .\" or visit www.oracle.com if you need additional information or have any
  22 .\" questions.
  23 .\"
  24 .\" 
  25 '\"macro stdmacro
  26 .TH javah 1 "2006 年 9 月 4 日" "Java SE 6" "ユーザーコマンド"
  27 .SH "名前"
  28 javah \- C 言語のヘッダとスタブファイルのジェネレータ
  29 .\" 
  30 .\"  This document was created by saving an HTML file as text
  31 .\"  from the JavaSoft web site:
  32 .\" 
  33 .\" http://java.sun.com/products/jdk/1.2/docs/tooldocs/tools.html
  34 .\" 
  35 .\"  and adding appropriate troff macros.  Because the JavaSoft web site 
  36 .\"  man pages can change without notice, it may be helpful to diff
  37 .\"  files to identify changes other than new functionality. 
  38 .\" 
  39 .LP
  40 
  41 .LP
  42 .LP
  43 \f3javah\fP は、Java クラスから C ヘッダファイルと C ソースファイルを作成します。これらのファイルは、Java プログラミング言語で書かれたコードと、C などのその他の言語で書かれたコードを接続し、コードが相互に作用するようにします。
  44 .LP
  45 .SH "形式"
  46 .B javah 
  47 [
  48 .B options
  49 ]
  50 .I fully-qualified-classname . . .
  51 .br
  52 .B javah_g 
  53 [
  54 .B options
  55 ]
  56 .I fully-qualified-classname . . .
  57 .SH "機能説明"
  58 .IX "stub file generator" "" "stub file generator \(em \fLjavah\fP"
  59 .IX "C header and stub file generator" "" "C header and stub file generator \(em \fLjavah\fP"
  60 .IX "javah" "" "\fLjavah\fP \(em C header and stub file generator"
  61 .B javah
  62 コマンドは、ネイティブメソッドを実装するのに必要な
  63 C
  64 言語のヘッダおよびソースファイルを生成します。
  65 C
  66 のプログラムは、
  67 生成されたヘッダとソースファイルを使って、
  68 ネイティブソースコードからオブジェクトのインスタンス
  69 変数を参照できます。
  70 .B .h
  71 ファイルは、対応するクラスに合ったレイアウトの
  72 構造体定義を含んでいます。
  73 構造体に含まれるフィールドは、クラス内のインスタンス変数に
  74 対応しています。
  75 .LP
  76 ヘッダファイル名およびヘッダファイル中で定義される構造体名は、
  77 クラス名から派生します。
  78 .B javah
  79 に渡されるクラスがパッケージ内部にあれば、
  80 そのパッケージ名がファイル名および構造体名の先頭に付加されます。
  81 名前の間は下線
  82 (_)
  83 で区切られます。
  84 .LP
  85 デフォルトでは、
  86 .B javah
  87 はコマンド行で指定された個々のクラスに対して
  88 ヘッダファイルを作成し、現在のディレクトリに出力します。
  89 .B \-stubs
  90 オプションを指定するとソースファイルが生成されます。
  91 .B \-o
  92 オプションを指定すると、指定した全クラスに対する出力ファイル
  93 を連結して
  94 1
  95 個のファイルとして生成します。
  96 .LP
  97 新しいネイティブメソッドインタフェースの
  98 Java Native Interface (JNI)
  99 は、ヘッダ情報やスタブファイルを必要としません。
 100 ただし
 101 .B javah
 102 コマンドは現在も JNI 形式のネイティブメソッドに必要な
 103 ネイティブメソッド関数プロトタイプを生成できます。
 104 .B javah 
 105 はデフォルトで JNI 形式で出力し、その結果を 
 106 .B .h
 107 ファイルに格納します。
 108 .LP
 109 .B javah_g
 110 は非最適化バージョンの
 111 .B javah
 112 で、
 113 .B jdb
 114 などのデバッガ用の使用に適しています。
 115 .SH "オプション"
 116 .TP 15
 117 .BI \-o " outputfile"
 118 コマンド行で指定したすべてのクラスに対する結果のヘッダファイルまたは
 119 ソースファイルを連結し、
 120 .BR outputfile 
 121 に格納します。
 122 .B \-o
 123 オプションまたは 
 124 .B \-d
 125 オプションだけを使用できます。
 126 .TP 15
 127 .BI \-d " directory"
 128 .B javah
 129 がヘッダファイルまたはスタブファイルを書き出す
 130 ディレクトリを指定します。
 131 .TP 15
 132 .B \-stubs
 133 Java オブジェクトファイルから C 言語の宣言を生成します。
 134 .TP 15
 135 .B \-verbose
 136 詳細情報の出力を要求します。
 137 .B javah
 138 は、生成されたファイルの状態に関するメッセージを
 139 .B stdout
 140 に書き出します。
 141 .TP 15
 142 .B  \-help
 143 .B javah
 144 の使用法についてヘルプメッセージを出力します。
 145 .TP 15
 146 .B \-version
 147 javah バージョン情報を出力します。
 148 .TP 15
 149 .B  \-jni
 150 JNI 形式のネイティブなメソッド関数のプロトタイプが入った出力ファイルを
 151 作成します。これはデフォルトの出力であるため、
 152 -B \-jni
 153 は省略可能です。
 154 .TP 15
 155 .BI \-classpath " path"
 156 .B javah
 157 がクラスを検索するために用いるパスを
 158 .I path
 159 で指定します。この指定値は、デフォルトおよび
 160 .B CLASSPATH
 161 環境変数の設定値をオーバーライドします。
 162 複数のディレクトリを指定する場合はコロンで区切ります。
 163 したがって
 164 .I path
 165 の通常の形式は次のようになります。
 166 .RS 20
 167 .sp 1n
 168 .LP
 169 .BI .:< your_path >
 170 .sp 1n
 171 .RE
 172 .RS 15
 173 .LP
 174 パスの指定例:
 175 .RE
 176 .RS 20
 177 .sp 1n
 178 .LP
 179 .B .:/home/avh/classes:/usr/local/java/classes
 180 .sp 1n
 181 .RE
 182 .LP
 183 便宜上、\f2*\fP のベース名を含むクラスパス要素は、ディレクトリ内の拡張子 \f2.jar\fP または \f2.JAR\fP を持つすべてのファイルのリストを指定するのと同じとみなされます (Java プログラムはこの 2 つの呼び出しを区別できない)。
 184 .br
 185 .br
 186 たとえば、ディレクトリ \f2foo\fP に \f2a.jar\fP と \f2b.JAR\fP が含まれている場合、クラスパス要素 \f2foo/*\fP は \f2A.jar:b.JAR\fP に展開されます。ただし、JAR ファイルの順番は未定義となります。このリストには、隠しファイルも含め、指定されたディレクトリ内のすべての JAR ファイルが含まれます。\f2*\fP だけから成るクラスパスエントリは、カレントディレクトリ内のすべての JAR ファイルのリストに展開されます。\f2CLASSPATH\fP 環境変数も、定義時には同様に展開されます。クラスパスのワイルドカード展開は必ず、Java 仮想マシンの起動前に実行されます。したがって、\f2System.getenv("CLASSPATH")\fP 呼び出しなどの環境に対する問い合わせを行わない限り、展開されていないワイルドカードを Java プログラムは認識しません。   
 187 .TP 15
 188 .BI \-bootclasspath " path"
 189 bootstrap クラスをロードするパスを指定します。デフォルトでは、bootstrap 
 190 クラスはコアとなる Java 2 プラットフォームを実装するクラスで、
 191 .B jre/lib/rt.jar
 192 および他の重要な jar ファイルに含まれています。
 193 .TP 15
 194 .B \-old
 195 古い JDK 1.0 形式のヘッダファイルを生成します。
 196 .TP 15
 197 .B  \-force
 198 常に出力ファイルに書き込むことを指定します。
 199 .TP 15
 200 .BI \-J "option"
 201 .I option
 202 を Java 仮想マシンに渡します。ここで、
 203 .I option
 204 は、Java アプリケーション起動プログラムの参照ページで
 205 説明されているオプションの 1 つです。たとえば、
 206 .I \-J-Xms48m
 207 は、起動時に使用するメモリを 48M バイトに設定します。
 208 .SH "環境変数"
 209 .TP 15
 210 .B CLASSPATH
 211 ユーザ定義クラスへのパスをシステムに通知するために使用します。
 212 複数のディレクトリを指定する場合はコロンで区切ります。
 213 以下に例を示します。
 214 .RS 10
 215 .sp 1n
 216 .LP
 217 .B .:/home/avh/classes:/usr/local/java/classes
 218 .RE
 219 .SH "関連項目"
 220 .LP
 221 
 222 .LP
 223 .LP
 224 javac、java、jdb、javap、javadoc
 225 .LP
 226 
 227 .LP
 228