javac.1 41.9 KB
Newer Older
1
." Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved.
D
duke 已提交
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
."
." This code is free software; you can redistribute it and/or modify it
." under the terms of the GNU General Public License version 2 only, as
." published by the Free Software Foundation.
."
." This code is distributed in the hope that it will be useful, but WITHOUT
." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
." FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
." version 2 for more details (a copy is included in the LICENSE file that
." accompanied this code).
."
." You should have received a copy of the GNU General Public License version
." 2 along with this work; if not, write to the Free Software Foundation,
." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
."
18 19 20
." Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
." or visit www.oracle.com if you need additional information or have any
." questions.
D
duke 已提交
21
."
22
.TH javac 1 "02 Jun 2010"
D
duke 已提交
23 24

.LP
T
tbell 已提交
25 26
.SH "名前"
javac \- Java プログラミング言語コンパイラ
D
duke 已提交
27
.LP
T
tbell 已提交
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
.RS 3
.TP 2
o
形式 
.TP 2
o
説明 
.TP 2
o
オプション 
.TP 2
o
コマンド行引数ファイル 
.TP 2
o
注釈処理 
.TP 2
o
型の検索 
.TP 2
o
プログラマティックインタフェース 
.TP 2
o

.TP 2
o
関連項目 
.RE

.LP
.SH "形式"
D
duke 已提交
60 61 62 63 64 65 66 67 68 69 70 71 72 73
.LP

.LP
.nf
\f3
.fl
        \fP\f3javac\fP [ options ] [ sourcefiles ] [ classes ] [ @argfiles ]
.fl
      
.fl
.fi

.LP
.LP
T
tbell 已提交
74
引数は順不同です。
D
duke 已提交
75 76 77 78 79 80 81
.LP
.RS 3

.LP
.RS 3
.TP 3
options 
T
tbell 已提交
82
コマンド行オプション。 
D
duke 已提交
83 84
.TP 3
sourcefiles 
T
tbell 已提交
85
コンパイルされる 1 つ以上のソースファイル (MyClass.java など) 
D
duke 已提交
86 87
.TP 3
classes 
T
tbell 已提交
88
注釈の処理対象となる 1 つ以上のクラス (MyPackage.MyClass など) 
D
duke 已提交
89 90
.TP 3
@argfiles 
T
tbell 已提交
91
オプションとソースファイルを列挙した 1 つ以上のファイル。このファイルの中では、\f2\-J\fP オプションは指定できません。 
D
duke 已提交
92 93 94 95
.RE

.LP
.RE
T
tbell 已提交
96
.SH "説明"
D
duke 已提交
97 98 99 100
.LP

.LP
.LP
T
tbell 已提交
101
\f3javac\fP ツールは、Java プログラミング言語で記述されたクラスとインタフェースの定義を読み取り、バイトコードのクラスファイルにコンパイルします。また、Java ソースファイルおよびクラス内の注釈の処理も行います。
D
duke 已提交
102 103
.LP
.LP
T
tbell 已提交
104
ソースコードのファイル名を \f3javac\fP に渡すには、次の 2 つの方法があります。
D
duke 已提交
105 106 107 108
.LP
.RS 3
.TP 2
o
T
tbell 已提交
109
ソースファイルの数が少ない場合は、ファイル名をコマンド行で直接指定します。 
D
duke 已提交
110 111
.TP 2
o
T
tbell 已提交
112
ソースファイルの数が多い場合は、ファイル名を空白または改行で区切って、1 つのファイルに列挙します。次に、このリストファイル名の先頭に \f3@\fP を付けて、\f3javac\fP のコマンド行で指定します。 
D
duke 已提交
113 114 115 116
.RE

.LP
.LP
T
tbell 已提交
117
ソースコードのファイル名は \f2.java\fP 拡張子を、クラスのファイル名は \f2.class\fP 拡張子を持っていなければなりません。 また、ソースファイルとクラスファイルのどちらも、該当するクラスに対応するルート名を持っていなければなりません。たとえば、\f2MyClass\fP という名前のクラスは、\f2MyClass.java\fP という名前のソースファイルに記述します。 このソースファイルは、\f2MyClass.class\fP という名前のバイトコードクラスファイルにコンパイルされます。
D
duke 已提交
118 119
.LP
.LP
T
tbell 已提交
120
内部クラスが定義されていると、追加のクラスファイルが生成されます。これらのクラスファイルの名前は、\f2MyClass$MyInnerClass.class\fP のように、外部クラス名と内部クラス名を組み合わせたものになります。
D
duke 已提交
121 122
.LP
.LP
T
tbell 已提交
123
ソースファイルは、パッケージツリーを反映したディレクトリツリーに配置する必要があります。たとえば、すべてのソースファイルを \f3/workspace\fP に置いている場合、\f2com.mysoft.mypack.MyClass\fP のソースコードは \f3/workspace/com/mysoft/mypack/MyClass.java\fP にある必要があります。
D
duke 已提交
124 125
.LP
.LP
T
tbell 已提交
126
デフォルトでは、コンパイラは、各クラスファイルを対応するソースファイルと同じディレクトリに置きます。別の出力先ディレクトリを指定するには、\f3\-d\fP を使用します (このあとのオプションを参照)。
D
duke 已提交
127
.LP
T
tbell 已提交
128
.SH "オプション"
D
duke 已提交
129 130 131 132
.LP

.LP
.LP
T
tbell 已提交
133
コンパイラには、現在の開発環境でサポートされており、将来のリリースでもサポートされる標準オプションのセットがあります。これ以外の非標準オプションは、現在の仮想マシンおよびコンパイラの実装に固有のオプションで、将来に変更される可能性があります。非標準オプションは、\f3\-X\fP で始まります。
D
duke 已提交
134 135
.LP
.SS 
T
tbell 已提交
136
標準オプション
D
duke 已提交
137 138 139 140 141 142 143
.LP
.RS 3

.LP
.RS 3
.TP 3
\-Akey[=value] 
T
tbell 已提交
144
注釈プロセッサに渡されるオプション。これらは、javac によって直接解釈されず、個々のプロセッサによって使用されます。 \f2key\fP には、1 つまたは複数の識別子を「.」で区切ったものを指定してください。 
D
duke 已提交
145
.TP 3
T
tbell 已提交
146 147
\-cp path または \-classpath path 
ユーザーのクラスファイルおよび (場合によっては) 注釈プロセッサやソースファイルの検索場所を指定します。このクラスパスは \f3CLASSPATH\fP 環境変数のユーザークラスパスをオーバーライドします。\f3CLASSPATH\fP、\f3\-cp\fP、\f3\-classpath\fP のいずれも指定されていない場合、ユーザークラスパスは、現在のディレクトリになります。詳細は、
D
duke 已提交
148
.na
T
tbell 已提交
149
\f2「クラスパスの設定」\fP @
D
duke 已提交
150
.fi
T
tbell 已提交
151
http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpathを参照してください。 
D
duke 已提交
152
.LP
T
tbell 已提交
153
\f3\-sourcepath\fP オプションが指定されていない場合は、ソースファイルもユーザークラスパスから検索されます。 
D
duke 已提交
154
.LP
T
tbell 已提交
155
\f3\-processorpath\fP オプションが指定されていない場合は、注釈プロセッサもユーザークラスパスから検索されます。  
D
duke 已提交
156
.LP
T
tbell 已提交
157
便宜上、\f2*\fP のベース名を含むクラスパス要素は、ディレクトリ内の拡張子 \f2.jar\fP または \f2.JAR\fP を持つすべてのファイルのリストを指定するのと同じとみなされます。
D
duke 已提交
158 159
.br
.br
T
tbell 已提交
160
たとえば、ディレクトリ \f2foo\fP に \f2a.jar\fP と \f2b.JAR\fP が含まれている場合、クラスパス要素 \f2foo/*\fP は \f2A.jar:b.JAR\fP に展開されます。 ただし、JAR ファイルの順番は指定されません。このリストには、隠しファイルも含め、指定されたディレクトリ内のすべての JAR ファイルが含まれます。\f2*\fP だけから成るクラスパスエントリは、カレントディレクトリ内のすべての JAR ファイルのリストに展開されます。\f2CLASSPATH\fP 環境変数も、定義時には同様に展開されます。\f3注:\fPコマンド行環境の構成によっては、\f2javac \-cp "*.jar" MyClass.java\fP などのように、ワイルドカード文字を引用符で囲まなければならない場合があります。  
D
duke 已提交
161 162
.TP 3
\-Djava.ext.dirs=directories 
T
tbell 已提交
163
インストール型拡張機能の位置をオーバーライドします。 
D
duke 已提交
164 165
.TP 3
\-Djava.endorsed.dirs=directories 
T
tbell 已提交
166
承認された標準パスの位置をオーバーライドします。 
D
duke 已提交
167 168
.TP 3
\-d directory 
T
tbell 已提交
169
クラスファイルの出力先ディレクトリを設定します。そのディレクトリはすでに存在している必要があります。 \f3javac\fP はディレクトリを作成しません。クラスがパッケージの一部である場合、\f3javac\fP は、必要に応じてディレクトリを作成し、パッケージ名を反映したサブディレクトリにクラスファイルを置きます。たとえば、\f3\-d /home/myclasses\fP と指定し、クラスの名前が \f2com.mypackage.MyClass\fP である場合、クラスファイルは \f2/home/myclasses/com/mypackage/MyClass.class\fP になります。 
D
duke 已提交
170
.LP
T
tbell 已提交
171
\f3\-d\fP が指定されなかった場合、\f3javac\fP は各クラスファイルを、その生成元となるソースファイルと同じディレクトリ内に格納します。 
D
duke 已提交
172
.LP
T
tbell 已提交
173
\f3注:\fP\f3\-d\fP で指定したディレクトリはユーザークラスパスに自動的には追加されません。  
D
duke 已提交
174 175
.TP 3
\-deprecation 
T
tbell 已提交
176
推奨されないメンバーやクラスが、使用またはオーバーライドされるたびに説明を表示します。\f3\-deprecation\fP が指定されていない場合、\f3javac\fP は、推奨されないメンバーやクラスを使用またはオーバーライドしているソースファイルの要約を表示します。\f3\-deprecation\fP は \f3\-Xlint:deprecation\fP の省略表記です。 
D
duke 已提交
177 178
.TP 3
\-encoding encoding 
T
tbell 已提交
179
ソースファイルのエンコーディング名 (\f2EUC\-JP\fP や \f2UTF\-8\fP など) を指定します。\f3\-encoding\fP が指定されていない場合は、プラットフォームのデフォルトコンバータが使われます。 
D
duke 已提交
180 181
.TP 3
\-g 
T
tbell 已提交
182
局所変数を含むすべてのデバッグ情報を生成します。デフォルトでは、行番号およびソースファイル情報だけが生成されます。 
D
duke 已提交
183 184
.TP 3
\-g:none 
T
tbell 已提交
185
デバッグ情報を生成しません。 
D
duke 已提交
186 187
.TP 3
\-g:{keyword list} 
T
tbell 已提交
188
コンマで区切られたキーワードリストにより指定された、特定の種類のデバッグ情報だけを生成します。次のキーワードが有効です。 
D
duke 已提交
189 190 191
.RS 3
.TP 3
source 
T
tbell 已提交
192
ソースファイルのデバッグ情報 
D
duke 已提交
193 194
.TP 3
lines 
T
tbell 已提交
195
行番号のデバッグ情報 
D
duke 已提交
196 197
.TP 3
vars 
T
tbell 已提交
198
局所変数のデバッグ情報 
D
duke 已提交
199 200 201
.RE
.TP 3
\-help 
T
tbell 已提交
202
標準オプションの形式を表示します。 
D
duke 已提交
203 204
.TP 3
\-implicit:{class,none} 
T
tbell 已提交
205
暗黙的にロードされたソースファイルに対するクラスファイルの生成を制御します。クラスファイルを自動生成するには、\f3\-implicit:class\fP を使用します。クラスファイルの生成を抑制するには、\f3\-implicit:none\fP を使用します。 このオプションが指定されなかった場合のデフォルト動作は、クラスファイルの自動生成になります。その場合、そのようなクラスファイルが生成された時に注釈処理も実行されると、コンパイラから警告が発行されます。 このオプションが明示的に設定された場合には、警告は発行されません。 「型の検索」を参照してください。 
D
duke 已提交
206 207
.TP 3
\-nowarn 
T
tbell 已提交
208
警告メッセージを無効にします。これは \f3\-Xlint:none\fP と同じ意味です。 
D
duke 已提交
209 210
.TP 3
\-proc: {none,only} 
T
tbell 已提交
211
注釈処理、コンパイル、その両方、のいずれを実行するかを制御します。\f3\-proc:none\fP は、注釈処理なしでコンパイルが実行されることを意味します。\f3\-proc:only\fP は、注釈処理だけが実行され、後続のコンパイルはまったく実行されないことを意味します。 
D
duke 已提交
212 213
.TP 3
\-processor class1[,class2,class3...] 
T
tbell 已提交
214
実行する注釈プロセッサの名前。これを指定した場合、デフォルトの検索処理は省略されます。 
D
duke 已提交
215 216
.TP 3
\-processorpath path 
T
tbell 已提交
217
注釈プロセッサの検索場所を指定します。 このオプションを使用しなかった場合、クラスパス内でプロセッサの検索が行われます。 
D
duke 已提交
218 219
.TP 3
\-s dir 
T
tbell 已提交
220
生成されたソースファイルの格納先となるディレクトリを指定します。そのディレクトリはすでに存在している必要があります。 \f3javac\fP は作成しません。クラスがパッケージの一部になっていた場合、コンパイラはそのソースファイルを、パッケージ名を反映したサブディレクトリ内に格納します。 その際、必要に応じてディレクトリを作成します。たとえば、ユーザーが \f3\-s /home/mysrc\fP と指定し、クラスの名前が \f2com.mypackage.MyClass\fP であった場合、そのソースファイルは \f2/home/mysrc/com/mypackage/MyClass.java\fP 内に格納されます。 
D
duke 已提交
221 222
.TP 3
\-source release 
T
tbell 已提交
223
受け付けるソースコードのバージョンを指定します。\f2release\fP には次の値を指定できます。 
D
duke 已提交
224 225 226
.RS 3
.TP 3
1.3 
T
tbell 已提交
227
このコンパイラでは、JDK 1.3 以降に導入されたアサーション、総称、または他の言語機能をサポートしません。 
D
duke 已提交
228 229
.TP 3
1.4 
T
tbell 已提交
230
JDK 1.4 で導入された、アサーションを含むコードを受け付けます。 
D
duke 已提交
231 232
.TP 3
1.5 
T
tbell 已提交
233
JDK 5 で導入された総称および他の言語機能を含んだコードを受け付けます。 
D
duke 已提交
234 235
.TP 3
5 
T
tbell 已提交
236
1.5 と同義です。 
D
duke 已提交
237 238
.TP 3
1.6 
T
tbell 已提交
239
これがデフォルト値です。Java SE 6 では言語に対する変更は導入されませんでしたが、ソースファイル内のエンコーディングエラーが、以前のような「警告」ではなく、「エラー」として報告されるようになりました。 
D
duke 已提交
240 241
.TP 3
6 
T
tbell 已提交
242
1.6 と同義です。 
D
duke 已提交
243 244 245
.RE
.TP 3
\-sourcepath sourcepath 
T
tbell 已提交
246
クラスまたはインタフェースの定義を検索するソースコードパスを指定します。ユーザークラスパスと同様に、ソースパスの複数のエントリはコロン (\f3:\fP) で区切ります。 ソースパスのエントリには、ディレクトリ、JAR アーカイブ、または ZIP アーカイブを指定できます。パッケージを使っている場合は、ディレクトリまたはアーカイブ内のローカルパス名がパッケージ名を反映していなければなりません。 
D
duke 已提交
247
.LP
T
tbell 已提交
248
\f3注:\fP\ クラスパスからクラスだけでなくそのソースも見つかった場合、そのクラスは自動再コンパイルの対象になることがあります。「型の検索」を参照してください。  
D
duke 已提交
249 250
.TP 3
\-verbose 
T
tbell 已提交
251
詳細な出力を表示します。ロードされるクラスおよびコンパイルされるソースファイルごとの情報が出力されます。 
D
duke 已提交
252 253
.TP 3
\-X 
T
tbell 已提交
254
非標準オプションに関する情報を表示して終了します。 
D
duke 已提交
255 256 257 258 259
.RE

.LP
.RE
.SS 
T
tbell 已提交
260
クロスコンパイルオプション
D
duke 已提交
261 262 263 264 265
.LP
.RS 3

.LP
.LP
T
tbell 已提交
266
デフォルトでは、クラスのコンパイルは、\f3javac\fP が添付されているプラットフォームのブートストラップクラスおよび拡張機能クラスに対して行われます。ただし、\f3javac\fP は、異なる Java プラットフォームに実装されたブートストラップクラスおよび拡張機能クラスに対してコンパイルを行う「クロスコンパイル」もサポートしています。クロスコンパイルを行う場合は、\f3\-bootclasspath\fP および \f3\-extdirs\fP を使うことが重要です。 このあとの「クロスコンパイルの例」を参照してください。
D
duke 已提交
267 268 269 270
.LP
.RS 3
.TP 3
\-target version 
T
tbell 已提交
271
指定されたバージョンの VM をターゲットにしたクラスファイルを生成します。このクラスファイルは、指定されたターゲット以降のバージョンでは動作しますが、それより前のバージョンの VM では動作しません。有効なターゲットは、\f31.1\fP、\f31.2\fP、\f31.3\fP、\f31.4\fP、\f31.5\fP (\f35\fP も可)、および \f31.6\fP (\f36\fP も可) です。 
D
duke 已提交
272
.LP
T
tbell 已提交
273
\f3\-target\fP のデフォルトは、次のように \f3\-source\fP の値によって決まります。 
D
duke 已提交
274 275 276
.RS 3
.TP 2
o
T
tbell 已提交
277
\-source が\f3指定されなかった\fP場合、\-target の値は \f31.6\fP になります。 
D
duke 已提交
278 279
.TP 2
o
T
tbell 已提交
280
\-source が\f31.2\fP の場合、\-target の値は \f31.4\fP になります。 
D
duke 已提交
281 282
.TP 2
o
T
tbell 已提交
283
\-source が\f31.3\fP の場合、\-target の値は \f31.4\fP になります。 
D
duke 已提交
284 285
.TP 2
o
T
tbell 已提交
286
\-source が\f3それ以外の値の場合はすべて\fP、\\\-target の値は \f3\-source\fP の値になります。 
D
duke 已提交
287 288 289
.RE
.TP 3
\-bootclasspath bootclasspath 
T
tbell 已提交
290
指定された一連のブートクラスに対してクロスコンパイルを行います。ユーザークラスパスと同様に、ブートクラスパスの複数のエントリはコロン (\f3:\fP) で区切ります。 ブートクラスパスのエントリには、ディレクトリ、JAR アーカイブ、または ZIP アーカイブを指定できます。 
D
duke 已提交
291 292
.TP 3
\-extdirs directories 
T
tbell 已提交
293
指定された拡張機能ディレクトリに対してクロスコンパイルを行います。\f2directories\fP には、コロンで区切ったディレクトリのリストを指定します。指定したディレクトリ内の各 JAR アーカイブから、クラスファイルが検索されます。 
D
duke 已提交
294 295 296 297 298
.RE

.LP
.RE
.SS 
T
tbell 已提交
299
非標準オプション
D
duke 已提交
300 301 302 303 304 305 306
.LP
.RS 3

.LP
.RS 3
.TP 3
\-Xbootclasspath/p:path 
T
tbell 已提交
307
ブートストラップクラスパスの前に追加します。 
D
duke 已提交
308 309
.TP 3
\-Xbootclasspath/a:path 
T
tbell 已提交
310
ブートストラップクラスパスの後ろに追加します。 
D
duke 已提交
311 312
.TP 3
\-Xbootclasspath/:path 
T
tbell 已提交
313
ブートストラップクラスファイルの位置をオーバーライドします。 
D
duke 已提交
314 315
.TP 3
\-Xlint 
T
tbell 已提交
316
推奨されるすべての警告を有効にします。このリリースでは、利用可能なすべての警告が推奨されています。 
D
duke 已提交
317 318
.TP 3
\-Xlint:none 
T
tbell 已提交
319
Java 言語仕様では指定されていないすべての警告を無効にします。 
D
duke 已提交
320 321
.TP 3
\-Xlint:\-name 
T
tbell 已提交
322
警告 \f2name\fP を無効にします。 ただし、\f2name\fP は、\f3\-Xlint:\fP\f2name\fP に使用できる警告名のいずれかになります。 この警告名は次のとおりです。 
D
duke 已提交
323 324
.TP 3
\-Xlint:unchecked 
T
tbell 已提交
325
Java 言語仕様で指定されている未検査変換警告の詳細を示します。 
D
duke 已提交
326 327
.TP 3
\-Xlint:path 
T
tbell 已提交
328
存在しないパス (classpath、sourcepath など) ディレクトリについて警告します。 
D
duke 已提交
329 330
.TP 3
\-Xlint:serial 
T
tbell 已提交
331
\f2serialVersionUID\fP 定義が直列化可能クラスにないことを警告します。 
D
duke 已提交
332 333
.TP 3
\-Xlint:finally 
T
tbell 已提交
334
正常に完了できない \f2finally\fP 節について警告します。 
D
duke 已提交
335 336
.TP 3
\-Xlint:fallthrough 
T
tbell 已提交
337
fall\-through ケースの \f2switch\fP ブロックをチェックし、検出されたものに対して警告メッセージを表示します。Fall\-through ケースは、\f2switch\fP ブロック内の最後のケースを除くケースです。 このコードには \f2break\fP 文は含まれません。 コードの実行をそのケースから次のケースへ移動します。たとえば、この \f2switch\fP ブロック内の \f2case 1\fP ラベルに続くコードは、\f2break\fP 文で終わっていません。 
D
duke 已提交
338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362
.RS 3

.LP
.nf
\f3
.fl
switch (x) {
.fl
case 1:
.fl
       System.out.println("1");
.fl
       //  No  break;  statement here.
.fl
case 2:
.fl
       System.out.println("2");
.fl
}
.fl
            
.fl
\fP
.fi
.RE
T
tbell 已提交
363
このコードのコンパイル時に \f2\-Xlint:fallthrough\fP フラグが使用されていた場合、コンパイラは 当該ケースの行番号とともに、fall\-through ケースの可能性があることを示す警告を発行します。 
D
duke 已提交
364
.TP 3
T
tbell 已提交
365 366
\-Xmaxerrs number 
印刷するエラーの最大数を設定します。 
D
duke 已提交
367 368
.TP 3
\-Xmaxwarns number 
T
tbell 已提交
369
印刷する警告の最大数を設定します。 
D
duke 已提交
370 371
.TP 3
\-Xstdout filename 
T
tbell 已提交
372
コンパイラのメッセージを、指定されたファイルに送ります。デフォルトでは、コンパイラのメッセージは \f2System.err\fP に送られます。 
D
duke 已提交
373 374
.TP 3
\-Xprefer:{newer,source} 
T
tbell 已提交
375
ある型に対してソースファイルとクラスファイルの両方が見つかった場合、そのどちらのファイルを読み取るべきかを指定します (「型の検索」を参照)。\f2\-Xprefer:newer\fP を使用した場合、ある型に対するソースファイルとクラスファイルの新しい方が読み取られます (デフォルト)。\f2\-Xprefer:source\fPオプションを使用した場合、ソースファイルが読み取られます。\f2SOURCE\fP の保存ポリシーを使って宣言された注釈に任意の注釈プロセッサがアクセスできるようにしたい場合は、\f2\-Xprefer:source\fPを使用してください。 
D
duke 已提交
376 377
.TP 3
\-Xprint 
T
tbell 已提交
378
指定された型のテキスト表現をデバッグ目的で出力します。 注釈処理、コンパイルのどちらも実行しません。出力形式は変更される可能性があります。 
D
duke 已提交
379 380
.TP 3
\-XprintProcessorInfo 
T
tbell 已提交
381
ある特定のプロセッサが処理を依頼されている注釈に関する情報を出力します。 
D
duke 已提交
382 383
.TP 3
\-XprintRounds 
T
tbell 已提交
384
初回および後続の注釈処理ラウンドに関する情報を出力します。 
D
duke 已提交
385 386 387 388 389
.RE

.LP
.RE
.SS 
T
tbell 已提交
390
\-J オプション
D
duke 已提交
391 392 393 394 395 396 397
.LP
.RS 3

.LP
.RS 3
.TP 3
\-Joption 
T
tbell 已提交
398
\f3javac\fP が呼び出す \f3java\fP 起動ツールに、\f2option\fP を渡します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。このオプションは \f3\-X\fP で始まっていませんが、\f3javac\fP の「標準オプション」ではありません。\f3\-J\fP を使って、Java で記述されたアプリケーションを実行する背後の VM にオプション渡すことは、よく行われています。 
D
duke 已提交
399
.LP
T
tbell 已提交
400
\f3注:\fP \  \f3CLASSPATH\fP、\f3\-classpath\fP、\f3\-bootclasspath\fP、および \f3\-extdirs\fP は、\f3javac\fP を実行するために使うクラスを指定するものではありません。このような方法でコンパイラの実装を操作することは、通常は無意味であり、常に危険を伴います。このような方法を使う必要がある場合は、\f3\-J\fP オプションを使って、必要なオプションを背後の \f3java\fP 起動ツールに渡してください。  
D
duke 已提交
401 402 403 404
.RE

.LP
.RE
T
tbell 已提交
405
.SH "コマンド行引数ファイル"
D
duke 已提交
406 407 408 409
.LP

.LP
.LP
T
tbell 已提交
410
\f2javac\fP のコマンド行を短くしたり簡潔にしたりするために、\f2javac\fP コマンドに対する引数 (\f2\-J\fP オプションを除く) を含む 1 つ以上のファイルを指定することができます。この方法を使うと、どのオペレーティングシステム上でも、任意の長さの javac コマンドを作成できます。
D
duke 已提交
411 412
.LP
.LP
T
tbell 已提交
413
引数ファイルには、javac のオプションとソースファイル名を自由に組み合わせて記述できます。ファイル内の各引数は、スペースまたは改行で区切ります。ファイル名に空白が含まれている場合は、そのファイル名全体を二重引用符で囲みます。
D
duke 已提交
414 415
.LP
.LP
T
tbell 已提交
416
引数ファイル内のファイル名は、現在のディレクトリから見た相対パスになります。引数ファイルの位置から見た相対パスではありません。引数ファイル内のファイル名リストでは、ワイルドカード (*) は使用できません。たとえば、\f2*.java\fP とは指定できません。引数ファイル内の引数で \f2@\fP 文字を使用して、複数のファイルを再帰的に解釈することはサポートされていません。また、\f2\-J\fP オプションもサポートされていません。 このオプションは起動ツールに渡されますが、起動ツールでは引数ファイルをサポートしていないからです。
D
duke 已提交
417 418
.LP
.LP
T
tbell 已提交
419
javac を実行するときに、各引数ファイルのパスとファイル名の先頭に \f2@\fP 文字を付けて渡します。javac は、\f2@\fP 文字で始まる引数を見つけると、そのファイルの内容を展開して引数リストに挿入します。
D
duke 已提交
420 421
.LP
.SS 
T
tbell 已提交
422
引数ファイルを 1 つ指定する例
D
duke 已提交
423 424
.LP
.LP
T
tbell 已提交
425
\f2argfile\fP という名前の引数ファイルにすべての javac 引数を格納する場合は、次のように指定します。
D
duke 已提交
426 427 428 429 430 431 432 433 434 435 436 437
.LP
.nf
\f3
.fl
  % \fP\f3javac @argfile\fP
.fl
      
.fl
.fi

.LP
.LP
T
tbell 已提交
438
この引数ファイルには、次の例で示されている 2 つのファイルの内容を両方とも入れることができます。
D
duke 已提交
439 440
.LP
.SS 
T
tbell 已提交
441
引数ファイルを 2 つ指定する例
D
duke 已提交
442 443
.LP
.LP
T
tbell 已提交
444
たとえば、javac オプション用に 1 ファイル、ソースファイル名用に 1 ファイルというように、2 つの引数ファイルを作成することもできます。なお、このあとのリストでは、行の継続文字を使用していません。
D
duke 已提交
445 446
.LP
.LP
T
tbell 已提交
447
以下の内容を含む \f2options\fP という名前のファイルを作成します。
D
duke 已提交
448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464
.LP
.nf
\f3
.fl
     \-d classes
.fl
     \-g
.fl
     \-sourcepath /java/pubs/ws/1.3/src/share/classes
.fl
      
.fl
\fP
.fi

.LP
.LP
T
tbell 已提交
465
以下の内容を含む \f2classes\fP という名前のファイルを作成します。
D
duke 已提交
466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482
.LP
.nf
\f3
.fl
     MyClass1.java
.fl
     MyClass2.java
.fl
     MyClass3.java
.fl
      
.fl
\fP
.fi

.LP
.LP
T
tbell 已提交
483
次のコマンドを使用して \f3javac\fP を実行します。
D
duke 已提交
484 485 486 487 488 489 490 491 492 493 494 495
.LP
.nf
\f3
.fl
  % \fP\f3javac @options @classes\fP
.fl
      
.fl
.fi

.LP
.SS 
T
tbell 已提交
496
パス付きの引数ファイルの例
D
duke 已提交
497 498
.LP
.LP
T
tbell 已提交
499
引数ファイルには、パスを指定できます。 ただし、そのファイル内に指定されたファイル名は、現在の作業ディレクトリから見た相対パスになります。 つまり、下の例の場合は、\f2path1\fP や \f2path2\fP から見た相対パスではありません。
D
duke 已提交
500 501 502 503 504 505 506 507 508 509 510
.LP
.nf
\f3
.fl
  % \fP\f3javac @path1/options @path2/classes\fP
.fl
      
.fl
.fi

.LP
T
tbell 已提交
511
.SH "注釈処理"
D
duke 已提交
512 513 514 515
.LP

.LP
.LP
T
tbell 已提交
516
\f3javac\fP が注釈処理を直接サポートしているため、独立した注釈処理ツールである \f3apt\fP を使用する必要がなくなりました。
D
duke 已提交
517 518
.LP
.LP
T
tbell 已提交
519
注釈処理の API は、\f2javax.annotation.processing\fP および \f2javax.lang.model\fP パッケージとそのサブパッケージ内に定義されています。
D
duke 已提交
520 521
.LP
.SS 
T
tbell 已提交
522
注釈処理の概要
D
duke 已提交
523 524
.LP
.LP
T
tbell 已提交
525 526 527 528 529
\f3\-proc:none\fP オプションによって注釈処理が無効化されないかぎり、コンパイラは使用可能なすべての注釈プロセッサを検索します。検索パスは \f3\-processorpath\fP オプションを使って指定できます。 検索パスを指定しなかった場合は、ユーザークラスパスが使用されます。プロセッサの検索は、検索パス上の
.br
\f2\  META\-INF/services/javax.annotation.processing.Processor\fP
.br
という名前のサービスプロバイダ構成ファイルに基づいて行われます。このようなファイルには、使用するすべての注釈プロセッサの名前を、1 行に 1 つずつ含めてください。また、別の方法として、\f3\-processor\fP オプションを使ってプロセッサを明示的に指定することもできます。
D
duke 已提交
530 531
.LP
.LP
T
tbell 已提交
532
コンパイラは、コマンド行のソースファイルやクラスを走査することで、どのような注釈が存在しているかを確認し終わると、プロセッサに対して問い合わせを行い、それらのプロセッサがの注釈を処理できるのかを確認します。一致するものが見つかった場合、そのプロセッサが呼び出されます。各プロセッサは、自身が処理する注釈を「要求」できます。 その場合、それらの注釈に対する別のプロセッサを見つける試みは行われません。すべての注釈が要求されてしまうと、コンパイラはそれ以上プロセッサの検索を行いません。
D
duke 已提交
533 534
.LP
.LP
T
tbell 已提交
535
いずれかのプロセッサによって新しいソースファイルが生成されると、注釈処理の 2 回目のラウンドが開始されます。新しく生成されたすべてのソースファイルが走査され、前回と同様に注釈が処理されます。以前のラウンドで呼び出されたプロセッサはすべて、後続のどのラウンドでも呼び出されます。これが、新しいソースファイルが生成されなくなるまで続きます。
D
duke 已提交
536 537
.LP
.LP
T
tbell 已提交
538
あるラウンドで新しいソースファイルが生成されなかった場合、注釈プロセッサがあと 1 回だけ呼び出され、必要な処理を実行する機会が与えられます。 最後に、\f3\-proc:only\fP オプションが使用されないかぎり、コンパイラは、元のソースファイルと生成されたすべてのソースファイルをコンパイルします。
D
duke 已提交
539 540
.LP
.SS 
T
tbell 已提交
541
暗黙的にロードされたソースファイル
D
duke 已提交
542 543
.LP
.LP
T
tbell 已提交
544
コンパイラは、一連のソースファイルをコンパイルする際に、別のソースファイルを暗黙的にロードしなければならない場合があります (「型の検索」を参照)。そのようなファイルは、現時点では注釈処理の対象になりません。デフォルトでは、注釈処理が実行され、かつ暗黙的にロードされたソースファイルが 1 つでもコンパイルされた場合にコンパイラは警告を発行します。この警告を抑制する方法については、\-implicit オプションを参照してください。
D
duke 已提交
545
.LP
T
tbell 已提交
546
.SH "型の検索"
D
duke 已提交
547 548 549 550
.LP

.LP
.LP
T
tbell 已提交
551
ソースファイルをコンパイルする場合、コマンド行で指定したソースファイルに型の定義が見つからないとき、コンパイラは通常、その型に関する情報を必要とします。コンパイラは、ソースファイルで使われているクラスまたはインタフェース、拡張されているクラスまたはインタフェース、あるいは実装されているクラスまたはインタフェースすべてについて、型の情報を必要とします。これには、ソースファイルで明示的には言及されていなくても、継承を通じて情報を提供するクラスとインタフェースも含まれます。
D
duke 已提交
552 553
.LP
.LP
T
tbell 已提交
554
たとえば、\f3java.applet.Applet\fP をサブクラスにした場合、\f3アプレットの\fP祖先のクラス(\f3java.awt.Panel\fP、\f3java.awt.Container\fP、\f3java.awt.Component\fP、\f3java.lang.Object\fP)を使用していることになります。
D
duke 已提交
555 556
.LP
.LP
T
tbell 已提交
557
コンパイラは、型の情報が必要になると、その型を定義しているソースファイルまたはクラスファイルを探します。まず、ブートストラップクラスと拡張機能クラスを検索し、続いてユーザークラスパス (デフォルトではカレントディレクトリ) を検索します。ユーザークラスパスは、\f3CLASSPATH\fP 環境変数を設定して定義するか、または \f3\-classpath\fP コマンド行オプションを使って設定します。詳細は、
D
duke 已提交
558
.na
T
tbell 已提交
559
\f2「クラスパスの設定」\fP @
D
duke 已提交
560
.fi
T
tbell 已提交
561
http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpathを参照してください。
D
duke 已提交
562 563
.LP
.LP
T
tbell 已提交
564
\-sourcepath オプションが指定されている場合、コンパイラは、指定されたパスからソースファイルを検索します。 それ以外の場合は、ユーザークラスパスからクラスファイルとソースファイルの両方を検索します。
D
duke 已提交
565 566
.LP
.LP
T
tbell 已提交
567
\f3\-bootclasspath\fP オプションと \f3\-extdirs\fP オプションを使うと、別のブートストラップクラスや拡張機能クラスを指定できます。 このあとの「クロスコンパイルオプション」を参照してください。
D
duke 已提交
568 569
.LP
.LP
T
tbell 已提交
570
型の検索に成功したときに得られる結果は、クラスファイル、ソースファイル、またはその両方である場合があります。両方が見つかった場合、そのどちらを使用すべきかを \-Xprefer オプションでコンパイラに指示できます。\f3newer\fP が指定された場合、コンパイラは 2 つのファイルの新しい方を使用します。\f3source\fP が指定された場合、コンパイラはソースファイルを使用します。デフォルトは \f3newer\fP です。
D
duke 已提交
571 572
.LP
.LP
T
tbell 已提交
573
型の検索自体によって、または \f3\-Xprefer\fP が設定された結果として必要な型のソースファイルが見つかった場合、コンパイラはそのソースファイルを読み取り、必要な情報を取得します。さらに、コンパイラはデフォルトで、そのソースファイルのコンパイルも行います。\-implicit オプションを使えばその動作を指定できます。\f3none\fP を指定した場合、そのソースファイルのクラスファイルは生成されません。\f3class\fP を指定した場合、そのソースファイルのクラスファイルが生成されます。
D
duke 已提交
574 575
.LP
.LP
T
tbell 已提交
576
コンパイラは、注釈処理の完了後に、ある型情報の必要性を認識しない場合があります。その型情報があるソースファイル内に見つかり、かつ \f3\-implicit\fP オプションが指定されていない場合は、そのファイルが注釈処理の対象とならずにコンパイルされることを、コンパイラがユーザーに警告します。この警告を無効にするには、(そのファイルが注釈処理の対象となるように) そのファイルをコマンド行に指定するか、あるいはそのようなソースファイルに対してクラスファイルを生成すべきかどうかを \f3\-implicit\fP オプションを使って指定します。
D
duke 已提交
577
.LP
T
tbell 已提交
578
.SH "プログラマティックインタフェース"
D
duke 已提交
579 580 581 582
.LP

.LP
.LP
T
tbell 已提交
583
\f3javac\fP は、\f2javax.tools\fP パッケージ内のクラスとインタフェースによって定義される新しい Java Compiler API をサポートします。
D
duke 已提交
584 585
.LP
.SS 
T
tbell 已提交
586

D
duke 已提交
587 588
.LP
.LP
T
tbell 已提交
589
コマンド行から指定された引数を使ってコンパイルを実行するには、次のようなコードを使用します。
D
duke 已提交
590 591 592 593 594 595 596 597 598 599 600 601 602 603 604
.LP
.nf
\f3
.fl
JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
.fl
int rc = javac.run(null, null, null, args);
.fl
      
.fl
\fP
.fi

.LP
.LP
T
tbell 已提交
605
この場合、標準出力ストリームにすべての診断メッセージが書き出され、コマンド行から呼び出された \f3javac\fP が返すのと同じ終了コードが返されます。
D
duke 已提交
606 607
.LP
.LP
T
tbell 已提交
608
\f2javax.tools.JavaCompiler\fP インタフェース上のほかのメソッドを使えば、診断メッセージの処理やファイルの読み取り元/書き込み先の制御などを行えます。
D
duke 已提交
609 610
.LP
.SS 
T
tbell 已提交
611
旧式のインタフェース
D
duke 已提交
612 613 614 615 616
.LP
.RS 3

.LP
.LP
T
tbell 已提交
617
\f3注:\fP \ この API は、下位互換性を確保するためだけに残されています。 新しいコードでは、必ず前述の Java Compiler API を使用してください。
D
duke 已提交
618 619
.LP
.LP
T
tbell 已提交
620
\f2com.sun.tools.javac.Main\fP クラスには、プログラム内からコンパイラを呼び出すための static メソッドが 2 つ用意されています。 それらを次に示します。
D
duke 已提交
621 622 623 624 625 626 627 628 629 630 631 632 633 634 635
.LP
.nf
\f3
.fl
public static int compile(String[] args);
.fl
public static int compile(String[] args, PrintWriter out);
.fl
      
.fl
\fP
.fi

.LP
.LP
T
tbell 已提交
636
\f2args\fP パラメータは、javac プログラムに通常渡される任意のコマンド行引数を表しています。 その概要については、前出の「形式」節を参照してください。
D
duke 已提交
637 638
.LP
.LP
T
tbell 已提交
639
\f2out\fP パラメータは、コンパイラの診断メッセージの出力先を示します。
D
duke 已提交
640 641
.LP
.LP
T
tbell 已提交
642
戻り値は、\f3javac\fP の終了値と同じです。
D
duke 已提交
643 644
.LP
.LP
T
tbell 已提交
645
名前が \f2com.sun.tools.javac\fP で始まるパッケージ (非公式には \f2com.sun.tools.javac\fP のサブパッケージとして知られる) に含まれる\f3その他の\fPクラスやメソッドは、どれも完全に内部用であり、いつでも変更される可能性があります。
D
duke 已提交
646 647
.LP
.RE
T
tbell 已提交
648
.SH ""
D
duke 已提交
649 650
.LP
.SS 
T
tbell 已提交
651
簡単なプログラムのコンパイル
D
duke 已提交
652 653 654 655 656
.LP
.RS 3

.LP
.LP
T
tbell 已提交
657
\f2Hello.java\fP というソースファイルで、\f3greetings.Hello\fP という名前のクラスを定義しているとします。\f2greetings\fP ディレクトリは、ソースファイルとクラスファイルの両方があるパッケージディレクトリで、現在のディレクトリのすぐ下にあります。このため、この例では、デフォルトのユーザークラスパスを使用できます。また、\f3\-d\fP を使って別の出力先ディレクトリを指定する必要もありません。
D
duke 已提交
658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714
.LP
.RS 3

.LP
.nf
\f3
.fl
% \fP\f3ls\fP
.fl
greetings/
.fl
% \f3ls greetings\fP
.fl
Hello.java
.fl
% \f3cat greetings/Hello.java\fP
.fl
package greetings;
.fl

.fl
public class Hello {
.fl
    public static void main(String[] args) {
.fl
        for (int i=0; i < args.length; i++) {
.fl
            System.out.println("Hello " + args[i]);
.fl
        }
.fl
    }
.fl
}
.fl
% \f3javac greetings/Hello.java\fP
.fl
% \f3ls greetings\fP
.fl
Hello.class   Hello.java
.fl
% \f3java greetings.Hello World Universe Everyone\fP
.fl
Hello World
.fl
Hello Universe
.fl
Hello Everyone
.fl
        
.fl
.fi
.RE

.LP
.RE
.SS 
T
tbell 已提交
715
複数のソースファイルのコンパイル
D
duke 已提交
716 717 718 719 720
.LP
.RS 3

.LP
.LP
T
tbell 已提交
721
次の例では、パッケージ \f2greetings\fP 内のすべてのソースファイルをコンパイルします。
D
duke 已提交
722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754
.LP
.RS 3

.LP
.nf
\f3
.fl
% \fP\f3ls\fP
.fl
greetings/
.fl
% \f3ls greetings\fP
.fl
Aloha.java         GutenTag.java      Hello.java         Hi.java
.fl
% \f3javac greetings/*.java\fP
.fl
% \f3ls greetings\fP
.fl
Aloha.class         GutenTag.class      Hello.class         Hi.class
.fl
Aloha.java          GutenTag.java       Hello.java          Hi.java
.fl

.fl
        
.fl
.fi
.RE

.LP
.RE
.SS 
T
tbell 已提交
755
ユーザークラスパスの指定
D
duke 已提交
756 757 758 759 760
.LP
.RS 3

.LP
.LP
T
tbell 已提交
761
上の例のソースファイルのうち 1 つを変更し、変更後のファイルを再コンパイルするとします。
D
duke 已提交
762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781
.LP
.RS 3

.LP
.nf
\f3
.fl
% \fP\f3pwd\fP
.fl
/examples
.fl
% \f3javac greetings/Hi.java\fP
.fl
        
.fl
.fi
.RE

.LP
.LP
T
tbell 已提交
782
\f2greetings.Hi\fP は、\f2greetings\fP パッケージ内のほかのクラスを参照しているため、コンパイラはこれらのクラスを探す必要があります。上の例では、デフォルトのユーザークラスパスが、パッケージディレクトリを含むディレクトリと同じであるため、コンパイルは正常に実行されます。ただし、現在どのディレクトリにいるかに関係なく、このファイルを再コンパイルする場合は、ユーザークラスパスに \f2/examples\fP を追加する必要があります。ユーザークラスパスにエントリを追加するには、\f3CLASSPATH\fP を設定する方法もありますが、ここでは \f3\-classpath\fP オプションを使うことにします。
D
duke 已提交
783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798
.LP
.RS 3

.LP
.nf
\f3
.fl
% \fP\f3javac \-classpath /examples /examples/greetings/Hi.java\fP
.fl
        
.fl
.fi
.RE

.LP
.LP
T
tbell 已提交
799
再度 \f2greetings.Hi\fP を変更してバナーユーティリティーを使うようにした場合は、このバナーユーティリティーもユーザークラスパスを通じてアクセスできるようになっている必要があります。
D
duke 已提交
800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817
.LP
.RS 3

.LP
.nf
\f3
.fl
% \fP\f3javac \-classpath /examples:/lib/Banners.jar \\ 
.fl
            /examples/greetings/Hi.java\fP
.fl
        
.fl
.fi
.RE

.LP
.LP
T
tbell 已提交
818
\f2greetings\fP 内のクラスを実行するには、\f2greetings\fP と、\f2greetings\fP が使うクラスの両方にアクセスできる必要があります。
D
duke 已提交
819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835
.LP
.RS 3

.LP
.nf
\f3
.fl
% \fP\f3java \-classpath /examples:/lib/Banners.jar greetings.Hi\fP
.fl
        
.fl
.fi
.RE

.LP
.RE
.SS 
T
tbell 已提交
836
ソースファイルとクラスファイルの分離
D
duke 已提交
837 838 839 840 841
.LP
.RS 3

.LP
.LP
T
tbell 已提交
842
特に大規模プロジェクトの場合は、ソースファイルとクラスファイルを別々のディレクトリに置くと便利なことがあります。クラスファイルの出力先を別に指定するには、\f3\-d\fP を使います。ソースファイルはユーザークラスパスにはないので、\f3\-sourcepath\fP を使って、コンパイラがソースファイルを見つけることができるようにします。
D
duke 已提交
843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888
.LP
.RS 3

.LP
.nf
\f3
.fl
% \fP\f3ls\fP
.fl
classes/  lib/      src/
.fl
% \f3ls src\fP
.fl
farewells/
.fl
% \f3ls src/farewells\fP
.fl
Base.java      GoodBye.java
.fl
% \f3ls lib\fP
.fl
Banners.jar
.fl
% \f3ls classes\fP
.fl
% \f3javac \-sourcepath src \-classpath classes:lib/Banners.jar \\ 
.fl
            src/farewells/GoodBye.java \-d classes\fP
.fl
% \f3ls classes\fP
.fl
farewells/
.fl
% \f3ls classes/farewells\fP
.fl
Base.class      GoodBye.class
.fl

.fl
        
.fl
.fi
.RE

.LP
.LP
T
tbell 已提交
889
\f3注:\fP \ コマンド行では \f2src/farewells/Base.java\fP を指定していませんが、このファイルもコンパイラによってコンパイルされています。自動コンパイルを監視するには、\f3\-verbose\fP オプションを使います。
D
duke 已提交
890 891 892
.LP
.RE
.SS 
T
tbell 已提交
893
クロスコンパイルの例
D
duke 已提交
894 895 896 897 898
.LP
.RS 3

.LP
.LP
T
tbell 已提交
899
ここでは、\f3javac\fP を使って、1.5 VM 上で実行するコードをコンパイルします。
D
duke 已提交
900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917
.LP
.RS 3

.LP
.nf
\f3
.fl
% \fP\f3javac \-target 1.5 \-bootclasspath jdk1.5.0/lib/rt.jar \\ 
.fl
            \-extdirs "" OldCode.java\fP
.fl
        
.fl
.fi
.RE

.LP
.LP
T
tbell 已提交
918
\f3\-target 1.5\fP オプションにより、1.5 VM と互換性のあるクラスファイルが生成されます。デフォルトでは、\f3javac\fP は JDK 6 用にコンパイルします。
D
duke 已提交
919 920
.LP
.LP
T
tbell 已提交
921
Java プラットフォーム JDK の \f3javac\fP は、デフォルトでは、Java 2 SDK のブートストラップクラスに対してコンパイルを行うので、Java 2 SDK ではなく JDK 1.5 のブートストラップクラスに対してコンパイルを行うように指定する必要があります。これは、\f3\-bootclasspath\fP および \f3\-extdirs\fP を使って指定します。この指定を行わないと、1.5 VM には存在しない Java 2 プラットフォーム API に対応したコンパイルが行われるため、プログラムの実行時に障害が発生することがあります。
D
duke 已提交
922 923
.LP
.RE
T
tbell 已提交
924
.SH "関連項目"
D
duke 已提交
925 926 927 928 929 930 931
.LP

.LP
.RS 3
.TP 2
o
.na
T
tbell 已提交
932
\f2「The javac Guide」\fP @
D
duke 已提交
933
.fi
T
tbell 已提交
934
http://java.sun.com/javase/6/docs/technotes/guides/javac/index.html 
D
duke 已提交
935 936
.TP 2
o
T
tbell 已提交
937
「java(1) \- Java アプリケーション起動ツール」 
D
duke 已提交
938 939
.TP 2
o
T
tbell 已提交
940
「jdb(1) \- Java デバッガ」 
D
duke 已提交
941 942
.TP 2
o
T
tbell 已提交
943
「javah(1) \- C ヘッダーとスタブファイルジェネレータ」 
D
duke 已提交
944 945
.TP 2
o
T
tbell 已提交
946
「javap(1) \- クラスファイル逆アセンブラ」 
D
duke 已提交
947 948
.TP 2
o
T
tbell 已提交
949
「javadoc(1) \- Java API ドキュメントジェネレータ」 
D
duke 已提交
950 951
.TP 2
o
T
tbell 已提交
952
「jar(1) \- JAR アーカイブツール」 
D
duke 已提交
953 954 955
.TP 2
o
.na
T
tbell 已提交
956
\f2「Java 拡張機能フレームワーク」\fP @
D
duke 已提交
957
.fi
T
tbell 已提交
958
http://java.sun.com/javase/6/docs/technotes/guides/extensions/index.html 
D
duke 已提交
959 960 961 962
.RE

.LP