|
Java example source code file (javac.1)
The javac.1 Java example source code'\" t .\" Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved. .\" Title: javac .\" Language: English .\" Date: 2013年11月21日 .\" SectDesc: 基本ツール .\" Software: JDK 8 .\" Arch: 汎用 .\" .\" 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. .\" .\" 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. .\" .pl 99999 .TH "javac" "1" "2013年11月21日" "JDK 8" "基本ツール" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" javac \- Javaクラスおよびインタフェースの定義を読み取り、バイトコードおよびクラス・ファイルにコンパイルします。 .SH "概要" .sp .if n \{\ .RS 4 .\} .nf \fIjavac\fR [ \fIoptions\fR ] [ \fIsourcefiles\fR ] [ \fIclasses\fR] [ \fI@argfiles\fR ] .fi .if n \{\ .RE .\} .PP 引数を指定する順序は任意です。 .PP \fIoptions\fR .RS 4 コマンドライン・オプション。オプションを参照してください。 .RE .PP \fIsourcefiles\fR .RS 4 コンパイルされる1つ以上のソース・ファイル(\fIMyClass\&.java\fRなど)。 .RE .PP \fIclasses\fR .RS 4 注釈の処理対象となる1つ以上のクラス(\fIMyPackage\&.MyClass\fRなど)。 .RE .PP \fI@argfiles\fR .RS 4 オプションとソース・ファイルを一覧表示する1つ以上のファイル。このファイルの中では\fI\-J\fRオプションは指定できません。コマンドライン引数ファイルを参照してください。 .RE .SH "説明" .PP \fIjavac\fRコマンドは、Javaプログラミング言語で記述されたクラスとインタフェースの定義を読み取り、バイトコードのクラス・ファイルにコンパイルします。\fIjavac\fRコマンドでは、Javaソース・ファイルおよびクラス内の注釈の処理もできます。 .PP ソース・コードのファイル名を\fIjavac\fRに渡すには、2つの方法があります。 .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} ソース・ファイルの数が少ない場合は、ファイル名をコマンドラインで指定します。 .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} ソース・ファイルの数が多い場合は、ファイル内のファイル名を空白または改行で区切って指定します。\fIjavac\fRコマンドで、リスト・ファイル名の先頭にアットマーク(@)を使用します。 .RE .PP ソース・コードのファイル名は\&.java拡張子を、クラスのファイル名は\&.class拡張子を持っている必要があります。また、ソース・ファイルとクラス・ファイルのどちらも、該当するクラスに対応するルート名を持っている必要があります。たとえば、\fIMyClass\fRという名前のクラスは、\fIMyClass\&.java\fRという名前のソース・ファイルに記述されます。このソース・ファイルは、\fIMyClass\&.class\fRという名前のバイトコード・クラス・ファイルにコンパイルされます。 .PP 内部クラスが定義されていると、追加のクラス・ファイルが生成されます。これらのクラス・ファイルの名前は、\fIMyClass$MyInnerClass\&.class\fRのように、内部クラス名と外部クラス名を組み合せたものになります。 .PP ソース・ファイルは、パッケージ・ツリーを反映したディレクトリ・ツリーに配置します。たとえば、すべてのソース・ファイルが\fI/workspace\fRにある場合、\fIcom\&.mysoft\&.mypack\&.MyClass\fRのソース・コードを、\fI/workspace/com/mysoft/mypack/MyClass\&.java\fRに格納します。 .PP デフォルトでは、コンパイラは、各クラス・ファイルを対応するソース・ファイルと同じディレクトリに格納します。\fI\-d\fRオプションを使用して、別の出力先ディレクトリを指定できます。 .SH "オプション" .PP コンパイラには、現在の開発環境でサポートされる標準オプションのセットがあります。これ以外の非標準オプションは、現在の仮想マシンおよびコンパイラの実装に固有のオプションで、将来、変更される可能性があります。非標準オプションは、\fI\-X\fRオプションで始まります。 .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} クロスコンパイル・オプションを参照してください。 .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} 非標準オプションを参照してください。 .RE .SS "標準オプション" .PP \-A\fIkey\fR[\fI=value\fR] .RS 4 注釈プロセッサに渡すオプションを指定します。これらのオプションは、\fIjavac\fRが直接解釈するのではなく、それぞれのプロセッサで使用できるようになります。\fIkey\fRの値は、1つまたは複数の識別子をドット(\&.)で区切る必要があります。 .RE .PP \-cp \fIpath\fR or \-classpath \fIpath\fR .RS 4 ユーザー・クラス・ファイル、および(オプションで)注釈プロセッサとソース・ファイルを検索する場所を指定します。このクラス・パスは\fICLASSPATH\fR環境変数のユーザー・クラス・パスをオーバーライドします。\fICLASSPATH\fR、\fI\-cp\fR、\fI\-classpath\fRのいずれも指定されていない場合、ユーザーの\fIクラス・パス\fRは、現在のディレクトリになります。Setting the Class Path を参照してください。 .sp \fI\-sourcepath\fRオプションが指定されていない場合、ソース・ファイルもユーザー・クラス・パスから検索されます。 .sp \fI\-processorpath\fRオプションが指定されていない場合、注釈プロセッサもクラス・パスから検索されます。 .RE .PP \-Djava\&.ext\&.dirs=\fIdirectories\fR .RS 4 インストール済拡張機能の位置をオーバーライドします。 .RE .PP \-Djava\&.endorsed\&.dirs=\fIdirectories\fR .RS 4 承認された標準パスの位置をオーバーライドします。 .RE .PP \-d \fIdirectory\fR .RS 4 クラス・ファイルの出力先ディレクトリを設定します。そのディレクトリは\fIjavac\fRでは作成されないため、すでに存在している必要があります。クラスがパッケージの一部である場合、\fIjavac\fRは、パッケージ名を反映したサブディレクトリ内にクラス・ファイルを格納し、必要に応じてディレクトリを作成します。 .sp \fI\-d\fR \fI/home/myclasses\fRと指定し、クラスの名前が\fIcom\&.mypackage\&.MyClass\fRである場合、クラス・ファイルは\fI/home/myclasses/com/mypackage/MyClass\&.class\fRになります。 .sp \fI\-d\fRオプションが指定されなかった場合、\fIjavac\fRは、各クラス・ファイルを、その生成元となるソース・ファイルと同じディレクトリ内に格納します。 .sp \fB注意:\fR \fI\-d\fRオプションによって指定されたディレクトリは、ユーザー・クラス・パスに自動的に追加されません。 .RE .PP \-deprecation .RS 4 非推奨のメンバーまたはクラスが使用またはオーバーライドされるたびに、説明を表示します。\fI\-deprecation\fRオプションが指定されていない場合、\fIjavac\fRは、非推奨のメンバーまたはクラスを使用またはオーバーライドしているソース・ファイルのサマリーを表示します。\fI\-deprecation\fRオプションは、\fI\-Xlint:deprecation\fRの省略表記です。 .RE .PP \-encoding \fIencoding\fR .RS 4 ソース・ファイルのエンコーディング名(EUC\-JPやUTF\-8など)を設定します。\fI\-encoding\fRオプションが指定されていない場合は、プラットフォームのデフォルト・コンバータが使用されます。 .RE .PP \-endorseddirs \fIdirectories\fR .RS 4 承認された標準パスの位置をオーバーライドします。 .RE .PP \-extdirs \fIdirectories\fR .RS 4 \fIext\fRディレクトリの位置をオーバーライドします。directories変数には、コロンで区切ったディレクトリのリストを指定します。指定したディレクトリ内の各JARファイルから、クラス・ファイルが検索されます。検出されたすべてのJARファイルは、クラス・パスの一部になります。 .sp クロスコンパイル(異なるJavaプラットフォームに実装されたブートストラップ・クラスや拡張機能クラスに対してコンパイルを行う)を実行する場合、このオプションには拡張機能クラスを含むディレクトリを指定します。詳細はクロスコンパイル・オプションを参照してください。 .RE .PP \-g .RS 4 ローカル変数を含むすべてのデバッグ情報を生成します。デフォルトでは、行番号およびソース・ファイル情報のみが生成されます。 .RE .PP \-g:none .RS 4 デバッグ情報を生成しません。 .RE .PP \-g:[\fIkeyword list\fR] .RS 4 カンマで区切られたキーワード・リストにより指定された、特定の種類のデバッグ情報のみを生成します。次のキーワードが有効です。 .PP source .RS 4 ソース・ファイルのデバッグ情報。 .RE .PP lines .RS 4 行番号のデバッグ情報。 .RE .PP vars .RS 4 ローカル変数のデバッグ情報。 .RE .RE .PP \-help .RS 4 標準オプションの概要を出力します。 .RE .PP \-implicit:[\fIclass, none\fR] .RS 4 暗黙的にロードされたソース・ファイルに対するクラス・ファイルの生成を制御します。クラス・ファイルを自動生成するには、\fI\-implicit:class\fRを使用します。クラス・ファイルの生成を抑制するには、\fI\-implicit:none\fRを使用します。このオプションが指定されなかった場合のデフォルト動作は、クラス・ファイルの自動生成になります。その場合、そのようなクラス・ファイルが生成された時に注釈処理も実行されると、コンパイラから警告が発行されます。\fI\-implicit\fRオプションが明示的に設定された場合、警告は発行されません。型の検索を参照してください。 .RE .PP \-J\fIoption\fR .RS 4 Java仮想マシン(JVM)に\fIoption\fRを渡します。optionには、Java起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 .sp \fB注意:\fR \fICLASSPATH\fR、\fI\-classpath\fR、\fI\-bootclasspath\fRおよび\fI\-extdirs\fRオプションは、\fIjavac\fRの実行に使用されるクラスを指定しません。これらのオプションおよび変数を使用してコンパイラの実装をカスタマイズしようとすると、リスクが高く、多くの場合、必要な処理が実行されません。コンパイラの実装をカスタマイズする必要がある場合、\fI\-J\fRオプションを使用して、基礎となるJava起動ツールにオプションを渡します。 .RE .PP \-nowarn .RS 4 警告メッセージを無効にします。このオプションは、\fI\-Xlint:none\fRオプションと同じように動作します。 .RE .PP \-parameters .RS 4 リフレクションAPIのメソッド\fIjava\&.lang\&.reflect\&.Executable\&.getParameters\fRが取得できるように、生成されるクラス・ファイル内のコンストラクタとメソッドの仮パラメータ名を格納します。 .RE .PP \-proc: [\fInone\fR, \fIonly\fR] .RS 4 注釈処理およびコンパイルを実行するかを制御します。\fI\-proc:none\fRは、注釈処理なしでコンパイルが実行されることを意味します。\fI\-proc:only\fRは、注釈処理のみが実行され、後続のコンパイルはまったく実行されないことを意味します。 .RE .PP \-processor \fIclass1\fR [,\fIclass2\fR,\fIclass3\fR\&.\&.\&.] .RS 4 実行する注釈プロセッサの名前。これを指定した場合、デフォルトの検索処理は省略されます。 .RE .PP \-processorpath \fIpath\fR .RS 4 注釈プロセッサを検索する場所を指定します。このオプションが使用されない場合、クラス・パスのプロセッサが検索されます。 .RE .PP \-s \fIdir\fR .RS 4 生成されたソース・ファイルの格納先となるディレクトリを指定します。そのディレクトリは\fIjavac\fRでは作成されないため、すでに存在している必要があります。クラスがパッケージの一部である場合、コンパイラは、パッケージ名を反映したサブディレクトリ内にソース・ファイルを格納し、必要に応じてディレクトリを作成します。 .sp \fI\-s /home/mysrc\fRと指定し、クラスの名前が\fIcom\&.mypackage\&.MyClass\fRである場合、ソース・ファイルは\fI/home/mysrc/com/mypackage/MyClass\&.java\fRに格納されます。 .RE .PP \-source \fIrelease\fR .RS 4 受け付けるソース・コードのバージョンを指定します。\fIrelease\fRには次の値を指定できます。 .PP 1\&.3 .RS 4 このコンパイラでは、Java SE 1\&.3以降に導入されたアサーション、総称または他の言語機能をサポートしません。 .RE .PP 1\&.4 .RS 4 Java SE 1\&.4で導入された、アサーションを含むコードを受け付けます。 .RE .PP 1\&.5 .RS 4 Java SE 5で導入された総称および他の言語機能を含んだコードを受け付けます。 .RE .PP 5 .RS 4 1\&.5と同義です。 .RE .PP 1\&.6 .RS 4 Java SE 6では言語に対する変更は導入されませんでした。しかし、ソース・ファイル内のエンコーディング・エラーが、Java Platform, Standard Editionの以前のリリースような警告ではなく、エラーとして報告されるようになりました。 .RE .PP 6 .RS 4 1\&.6と同義です。 .RE .PP 1\&.7 .RS 4 これがデフォルト値です。Java SE 7で導入された機能を含むコードを受け付けます。 .RE .PP 7 .RS 4 1\&.7と同義です。 .RE .RE .PP \-sourcepath \fIsourcepath\fR .RS 4 クラスまたはインタフェースの定義を検索するソース・コード・パスを指定します。ユーザー・クラス・パスと同様に、ソース・パスのエントリは、Oracle Solarisではコロン(:)で、Windowsではセミコロンで区切り、ここには、ディレクトリ、JARアーカイブまたはZIPアーカイブを指定できます。パッケージを使用している場合は、ディレクトリまたはアーカイブ内のローカル・パス名がパッケージ名を反映している必要があります。 .sp \fB注意:\fR ソース・ファイルも見つかった場合、クラス・パスにより見つかったクラスは再コンパイルされる可能性があります。型の検索を参照してください。 .RE .PP \-verbose .RS 4 ロードされるクラスおよびコンパイルされるソース・ファイルごとの情報が出力される、詳細出力を使用します。 .RE .PP \-version .RS 4 リリース情報を出力します。 .RE .PP \-werror .RS 4 警告が発生した場合にコンパイルを終了します。 .RE .PP \-X .RS 4 非標準オプションに関する情報を表示して終了します。 .RE .SS "クロスコンパイル・オプション" .PP デフォルトでは、クラスのコンパイルは、\fIjavac\fRが添付されているプラットフォームのブートストラップ・クラスおよび拡張機能クラスに対して行われます。ただし、\fIjavac\fRは、異なるJavaプラットフォームに実装されたブートストラップ・クラスおよび拡張機能クラスに対してコンパイルを行うクロスコンパイルもサポートしています。クロスコンパイルを行う場合は、\fI\-bootclasspath\fRおよび\fI\-extdirs\fRオプションを使用することが重要です。 .PP \-target \fIversion\fR .RS 4 仮想マシンの指定されたリリースを対象とするクラス・ファイルを生成します。クラス・ファイルは、指定されたターゲット以降のリリースでは動作しますが、それより前のリリースのJVMでは動作しません。有効なターゲットは、1\&.1、1\&.2、1\&.3、1\&.4、1\&.5 (5も可)、1\&.6 (6も可)および1\&.7 (7も可)です。 .sp \fI\-target\fRオプションのデフォルトは、\fI\-source\fRオプションの値によって異なります。 .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fI\-source\fRオプションが指定されていない場合、\fI\-target\fRオプションの値は1\&.7です。 .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fI\-source\fRオプションが1\&.2の場合、\fI\-target\fRオプションの値は1\&.4です。 .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fI\-source\fRオプションが1\&.3の場合、\fI\-target\fRオプションの値は1\&.4です。 .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fI\-source\fRオプションが1\&.5の場合、\fI\-target\fRオプションの値は1\&.7です。 .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fI\-source\fRオプションが1\&.6の場合、\fI\-target\fRオプションの値は1\&.7です。 .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fI\-source\fRオプションの他のすべての値の場合、\fI\-target\fRオプションの値は、\fI\-source\fRオプションの値になります。 .RE .RE .PP \-bootclasspath \fIbootclasspath\fR .RS 4 指定された一連のブート・クラスに対してクロスコンパイルを行います。ユーザー・クラス・パスと同様に、ブート・クラス・パスのエントリはコロン(:)で区切り、ここには、ディレクトリ、JARアーカイブまたはZIPアーカイブを指定できます。 .RE .SS "コンパクト・プロファイル・オプション" .PP JDK 8以降から、\fIjavac\fRコンパイラはコンパクト・プロファイルをサポートします。コンパクト・プロファイルを使用すると、Javaプラットフォーム全体を必要としないアプリケーションは、デプロイ可能で、小さいフットプリントで実行できます。コンパクト・プロファイル機能は、アプリケーション・ストアからのアプリケーションのダウンロード時間を短縮するのに使用できます。この機能は、JREをバンドルするJavaアプリケーションの、よりコンパクトなデプロイメントに役立ちます。この機能は、小さいデバイスでも役立ちます。 .PP サポートされているプロファイル値は、\fIcompact1\fR、\fIcompact2\fRおよび\fIcompact3\fRです。これらは、追加のレイヤーです。大きい番号の各コンパクト・プロファイルには、小さい番号の名前のプロファイル内のすべてのAPIが含まれます。 .PP \-profile .RS 4 コンパクト・プロファイルを使用する場合、このオプションは、コンパイル時にプロファイル名を指定します。次に例を示します。 .sp .if n \{\ .RS 4 .\} .nf javac \-profile compact1 Hello\&.java .fi .if n \{\ .RE .\} javacは、指定されたプロファイルにない任意のJava SE APIを使用するソース・コードをコンパイルしません。これは、そのようなソース・コードをコンパイルしようとすることによって生じるエラー・メッセージの例です。 .sp .if n \{\ .RS 4 .\} .nf cd jdk1\&.8\&.0/bin \&./javac \-profile compact1 Paint\&.java Paint\&.java:5: error: Applet is not available in profile \*(Aqcompact1\*(Aq import java\&.applet\&.Applet; .fi .if n \{\ .RE .\} この例では、\fIApplet\fRクラスを使用しないようにソースを変更することによって、エラーを修正できます。\-profileオプションを指定せずにコンパイルすることによって、エラーを修正することもできます。コンパイルは、Java SE APIの完全なセットに対して実行されます。(どのコンパクト・プロファイルにも、\fIApplet\fRクラスは含まれていません。) .sp コンパクト・プロファイルを使用してコンパイルするための別の方法として、\fI\-bootclasspath\fRオプションを使用して、プロファイルのイメージを指定する\fIrt\&.jar\fRファイルへのパスを指定します。かわりに\fI\-profile\fRオプションを使用すると、プロファイル・イメージは、コンパイル時にシステム上に存在する必要がありません。これは、クロスコンパイル時に役立ちます。 .RE .SS "非標準オプション" .PP \-Xbootclasspath/p:\fIpath\fR .RS 4 ブートストラップ・クラス・パスに接尾辞を追加します。 .RE .PP \-Xbootclasspath/a:\fIpath\fR .RS 4 ブートストラップ・クラス・パスに接頭辞を追加します。 .RE .PP \-Xbootclasspath/:\fIpath\fR .RS 4 ブートストラップ・クラス・ファイルの位置をオーバーライドします。 .RE .PP \-Xdoclint:[\-]\fIgroup\fR [\fI/access\fR] .RS 4 \fIgroup\fRの値が\fIaccessibility\fR、\fIsyntax\fR、\fIreference\fR、\fIhtml\fRまたは\fImissing\fRのいずれかである特定のチェック・グループを有効または無効にします。これらのチェック・グループの詳細は、\fIjavadoc\fRコマンドの\fI\-Xdoclint\fRオプションを参照してください。\fI\-Xdoclint\fRオプションは、\fIjavac\fRコマンドではデフォルトで無効になります。 .sp 変数\fIaccess\fRは、\fI\-Xdoclint\fRオプションがチェックするクラスとメンバーの最小の可視性レベルを指定します。\fIpublic\fR、\fIprotected\fR、\fIpackage\fRおよび\fIprivate\fRの値(可視性の高い順)の1つを持つことができます。たとえば、次のオプションは、(protected、package、publicを含む) protected以上のアクセス・レベルを持つクラスおよびメンバーを(すべてのチェック・グループで)チェックします。 .sp .if n \{\ .RS 4 .\} .nf \-Xdoclint:all/protected .fi .if n \{\ .RE .\} 次のオプションは、package以上のアクセス権(packageおよびpublicを含む)を持つクラスおよびメンバーに対するHTMLエラーをチェックしないことを除き、すべてのアクセス・レベルに対してすべてのチェック・グループを有効にします。 .sp .if n \{\ .RS 4 .\} .nf \-Xdoclint:all,\-html/package .fi .if n \{\ .RE .\} .RE .PP \-Xdoclint:none .RS 4 すべてのチェック・グループを無効にします。 .RE .PP \-Xdoclint:all[\fI/access\fR] .RS 4 すべてのチェック・グループを有効にします。 .RE .PP \-Xlint .RS 4 推奨されるすべての警告を有効にします。このリリースでは、利用可能なすべての警告を有効にすることをお薦めします。 .RE .PP \-Xlint:all .RS 4 推奨されるすべての警告を有効にします。このリリースでは、利用可能なすべての警告を有効にすることをお薦めします。 .RE .PP \-Xlint:none .RS 4 すべての警告を無効にします。 .RE .PP \-Xlint:\fIname\fR .RS 4 警告名を無効にします。このオプションで無効にできる警告のリストは、\-Xlintオプションを使用した警告の有効化または無効化を参照してください。 .RE .PP \-Xlint:\fI\-name\fR .RS 4 警告名を無効にします。このオプションで無効にできる警告のリストを取得するには、\-Xlintオプションを使用した警告の有効化または無効化\-Xlint\fIオプションを使用した\fRを参照してください。 .RE .PP \-Xmaxerrs \fInumber\fR .RS 4 印刷するエラーの最大数を設定します。 .RE .PP \-Xmaxwarns \fInumber\fR .RS 4 印刷する警告の最大数を設定します。 .RE .PP \-Xstdout \fIfilename\fR .RS 4 コンパイラのメッセージを、指定されたファイルに送信します。デフォルトでは、コンパイラのメッセージは\fISystem\&.err\fRに送られます。 .RE .PP \-Xprefer:[\fInewer,source\fR] .RS 4 ある型に対してソース・ファイルとクラス・ファイルの両方が見つかった場合、そのどちらのファイルを読み取るかを指定します。(型の検索を参照してください)。\fI\-Xprefer:newer\fRオプションを使用した場合、ある型に対するソース・ファイルとクラス・ファイルのうち新しい方が読み取られます(デフォルト)。\fI\-Xprefer:source\fRオプションを使用した場合、ソース・ファイルが読み取られます。\fISOURCE\fRの保存ポリシーを使用して宣言された注釈に任意の注釈プロセッサがアクセスできるようにする場合は、\fI\-Xprefer:source\fRを使用してください。 .RE .PP \-Xpkginfo:[\fIalways\fR,\fIlegacy\fR,\fInonempty\fR] .RS 4 javacがpackage\-info\&.javaファイルから\fIpackage\-info\&.class\fRファイルを生成するかどうかを制御します。このオプションで使用可能なmode引数は次のとおりです。 .PP always .RS 4 すべての\fIpackage\-info\&.java\fRファイルの\fIpackage\-info\&.class\fRファイルを常に生成します。このオプションは、各\fI\&.java\fRファイルに対応する\fI\&.class\fRファイルがあることを確認するAntなどのビルド・システムを使用する場合に役立つことがあります。 .RE .PP legacy .RS 4 package\-info\&.javaに注釈が含まれる場合にのみ\fIpackage\-info\&.class\fRファイルを生成します。package\-info\&.javaにコメントのみ含まれる場合に\fIpackage\-info\&.class\fRファイルを生成しません。 .sp \fB注意:\fR \fIpackage\-info\&.class\fRファイルは生成できますが、package\-info\&.javaファイル内のすべての注釈に\fIRetentionPolicy\&.SOURCE\fRがある場合は空になります。 .RE .PP nonempty .RS 4 package\-info\&.javaに\fIRetentionPolicy\&.CLASS\fRまたは\fIRetentionPolicy\&.RUNTIME\fRとともに注釈が含まれる場合にのみ\fIpackage\-info\&.class\fRファイルを生成します。 .RE .RE .PP \-Xprint .RS 4 デバッグ目的で指定した型のテキスト表示を出力します。注釈処理もコンパイルも実行されません。出力形式は変更される可能性があります。 .RE .PP \-XprintProcessorInfo .RS 4 ある特定のプロセッサが処理を依頼されている注釈に関する情報を出力します。 .RE .PP \-XprintRounds .RS 4 初回および後続の注釈処理ラウンドに関する情報を出力します。 .RE .SH "-XLINTオプションを使用した警告の有効化または無効化" .PP \fI\-Xlint:name\fRオプションを使用して警告\fIname\fRを有効にします。ここで、\fIname\fRは次の警告名のいずれかになります。\fI\-Xlint:\-name:\fRオプションを使用して、警告を無効化できます。 .PP cast .RS 4 不要で冗長なキャストについて警告します。たとえば、次のようになります。 .sp .if n \{\ .RS 4 .\} .nf String s = (String) "Hello!" .fi .if n \{\ .RE .\} .RE .PP classfile .RS 4 クラス・ファイルの内容に関連した問題について警告します。 .RE .PP deprecation .RS 4 非推奨の項目の使用について警告します。たとえば、次のようになります。 .sp .if n \{\ .RS 4 .\} .nf java\&.util\&.Date myDate = new java\&.util\&.Date(); int currentDay = myDate\&.getDay(); .fi .if n \{\ .RE .\} メソッド\fIjava\&.util\&.Date\&.getDay\fRはJDK 1\&.1以降は非推奨になりました。 .RE .PP dep\-ann .RS 4 \fI@deprecated\fR Javadocコメントでドキュメント化されているが、\fI@Deprecated\fR注釈が付いていない項目について警告します。たとえば、次のようになります。 .sp .if n \{\ .RS 4 .\} .nf /** * @deprecated As of Java SE 7, replaced by {@link #newMethod()} */ public static void deprecatedMethood() { } public static void newMethod() { } .fi .if n \{\ .RE .\} .RE .PP divzero .RS 4 定整数0で除算されることについて警告します。たとえば、次のようになります。 .sp .if n \{\ .RS 4 .\} .nf int divideByZero = 42 / 0; .fi .if n \{\ .RE .\} .RE .PP empty .RS 4 \fIif \fR文以降が空の文であることについて警告します。たとえば、次のようになります。 .sp .if n \{\ .RS 4 .\} .nf class E { void m() { if (true) ; } } .fi .if n \{\ .RE .\} .RE .PP fallthrough .RS 4 fall\-throughケースのswitchブロックをチェックし、検出されたものに対して警告メッセージを表示します。Fall\-throughケースは、switchブロック内の最後のケースを除くケースです。このコードにはbreak文は含まれません。コードの実行をそのケースから次のケースへ移動します。たとえば、このswitchブロック内のcase 1ラベルに続くコードは、break文で終わっていません。 .sp .if n \{\ .RS 4 .\} .nf switch (x) { case 1: System\&.out\&.println("1"); // No break statement here\&. case 2: System\&.out\&.println("2"); } .fi .if n \{\ .RE .\} このコードのコンパイル時に\fI\-Xlint:fallthrough\fRオプションが使用されていた場合、コンパイラは、問題になっているケースの行番号とともに、caseにfall\-throughする可能性があることを示す警告を発行します。 .RE .PP finally .RS 4 正常に完了できない\fIfinally\fR句について警告します。たとえば、次のようになります。 .sp .if n \{\ .RS 4 .\} .nf public static int m() { try { throw new NullPointerException(); } catch (NullPointerException(); { System\&.err\&.println("Caught NullPointerException\&."); return 1; } finally { return 0; } } .fi .if n \{\ .RE .\} この例では、コンパイラは\fIfinally\fRブロックに関する警告を生成します。\fIint\fRメソッドが呼び出されると、値0が返されます。\fIfinally\fRブロックは、\fItry\fRブロックが終了すると実行されます。この例では、制御が\fIcatch\fRブロックに移された場合、\fIint\fRメソッドは終了します。ただし、\fIfinally\fRブロックは実行される必要があるため、制御がメソッドの外部に移されていても、このブロックは実行されます。 .RE .PP options .RS 4 コマンドライン・オプションの使用に関する問題について警告します。クロスコンパイル・オプションを参照してください。 .RE .PP overrides .RS 4 メソッドのオーバーライドに関する問題について警告します。たとえば、次の2つのクラスがあるとします。 .sp .if n \{\ .RS 4 .\} .nf public class ClassWithVarargsMethod { void varargsMethod(String\&.\&.\&. s) { } } public class ClassWithOverridingMethod extends ClassWithVarargsMethod { @Override void varargsMethod(String[] s) { } } .fi .if n \{\ .RE .\} コンパイラは、次のような警告を生成します。 .sp .if n \{\ .RS 4 .\} .nf warning: [override] varargsMethod(String[]) in ClassWithOverridingMethod overrides varargsMethod(String\&.\&.\&.) in ClassWithVarargsMethod; overriding method is missing \*(Aq\&.\&.\&.\*(Aq .fi .if n \{\ .RE .\} コンパイラは、\fIvarargs\fRメソッドを検出すると、\fIvarargs\fRの仮パラメータを配列に変換します。メソッド\fIClassWithVarargsMethod\&.varargsMethod\fRでは、コンパイラは\fIvarargs\fRの仮パラメータ\fIString\&.\&.\&. s\fRを仮パラメータ\fIString[] s\fRに変換します。これは、メソッド\fIClassWithOverridingMethod\&.varargsMethod\fRの仮パラメータに対応する配列です。その結果、この例ではコンパイルが行われます。 .RE .PP path .RS 4 コマンドラインでの無効なパス要素と存在しないパス・ディレクトリについて警告します(クラス・パス、ソース・パスなどのパス関連)。このような警告を\fI@SuppressWarnings\fR注釈で抑制することはできません。たとえば、次のようになります。 .sp .if n \{\ .RS 4 .\} .nf javac \-Xlint:path \-classpath /nonexistentpath Example\&.java .fi .if n \{\ .RE .\} .RE .PP processing .RS 4 注釈処理に関する問題について警告します。コンパイラがこの警告を生成するのは、注釈を含むクラスがあるときに、使用している注釈プロセッサでそのタイプの例外を処理できない場合です。たとえば、単純な注釈プロセッサを次に示します。 .sp \fBソース・ファイルAnnocProc\&.java\fR: .sp .if n \{\ .RS 4 .\} .nf import java\&.util\&.*; import javax\&.annotation\&.processing\&.*; import javax\&.lang\&.model\&.*; import\&.javaz\&.lang\&.model\&.element\&.*; @SupportedAnnotationTypes("NotAnno") public class AnnoProc extends AbstractProcessor { public boolean process(Set<? extends TypeElement> elems, RoundEnvironment renv){ return true; } public SourceVersion getSupportedSourceVersion() { return SourceVersion\&.latest(); } } .fi .if n \{\ .RE .\} \fBソース・ファイルAnnosWithoutProcessors\&.java\fR: .sp .if n \{\ .RS 4 .\} .nf @interface Anno { } @Anno class AnnosWithoutProcessors { } .fi .if n \{\ .RE .\} 次のコマンドは、注釈プロセッサ\fIAnnoProc\fRをコンパイルし、この注釈プロセッサをソース・ファイル\fIAnnosWithoutProcessors\&.java\fRに対して実行します。 .sp .if n \{\ .RS 4 .\} .nf javac AnnoProc\&.java javac \-cp \&. \-Xlint:processing \-processor AnnoProc \-proc:only AnnosWithoutProcessors\&.java .fi .if n \{\ .RE .\} コンパイラがソース・ファイル\fIAnnosWithoutProcessors\&.java\fRに対して注釈プロセッサを実行すると、次の警告が生成されます。 .sp .if n \{\ .RS 4 .\} .nf warning: [processing] No processor claimed any of these annotations: Anno .fi .if n \{\ .RE .\} この問題を解決するために、クラス\fIAnnosWithoutProcessors\fRで定義および使用される注釈の名前を、\fIAnno\fRから\fINotAnno\fRに変更できます。 .RE .PP rawtypes .RS 4 raw型に対する未検査操作について警告します。次の文では、\fIrawtypes\fR警告が生成されます。 .sp .if n \{\ .RS 4 .\} .nf void countElements(List l) { \&.\&.\&. } .fi .if n \{\ .RE .\} 次の例では、\fIrawtypes\fR警告は生成されません。 .sp .if n \{\ .RS 4 .\} .nf void countElements(List<?> l) { \&.\&.\&. } .fi .if n \{\ .RE .\} \fIList\fRはraw型です。ただし、\fIList<?>\fRは、アンバウンド形式のワイルドカードのパラメータ化された型です。\fIList\fRはパラメータ化されたインタフェースであるため、常にその型引数を指定します。この例では、\fIList\fRの仮引数はアンバウンド形式のワイルドカード(\fI?\fR)を使用してその仮型パラメータとして指定されます。つまり、\fIcountElements\fRメソッドは\fIList\fRインタフェースのどのインスタンス化も受け付けることができます。 .RE .PP Serial .RS 4 直列化可能クラスに\fIserialVersionUID\fR定義がないことを警告します。たとえば、次のようになります。 .sp .if n \{\ .RS 4 .\} .nf public class PersistentTime implements Serializable { private Date time; public PersistentTime() { time = Calendar\&.getInstance()\&.getTime(); } public Date getTime() { return time; } } .fi .if n \{\ .RE .\} コンパイラは次の警告を生成します。 .sp .if n \{\ .RS 4 .\} .nf warning: [serial] serializable class PersistentTime has no definition of serialVersionUID .fi .if n \{\ .RE .\} 直列化可能クラスが\fIserialVersionUID\fRという名前のフィールドを明示的に宣言しない場合、直列化ランタイム環境では、「Javaオブジェクト直列化仕様」で説明されているように、クラスの様々な側面に基づいて、クラスの\fIserialVersionUID\fRのデフォルト値を計算します。ただし、すべての直列化可能クラスが\fIserialVersionUID\fR値を明示的に宣言することを強くお薦めします。 これは、\fIserialVersionUID\fR値を計算するデフォルトのプロセスが、コンパイラの実装によって異なる可能性のあるクラスの詳細にきわめて影響を受けやすく、その結果、直列化復元中に予期しない\fIInvalidClassExceptions\fRが発生する可能性があるためです。Javaコンパイラの実装が異なっても\fIserialVersionUID\fR値の一貫性を確保にするには、直列化可能クラスが\fIserialVersionUID\fR値を明示的に宣言する必要があります。 .RE .PP static .RS 4 staticの使用に関する問題について警告します。たとえば、次のようになります。 .sp .if n \{\ .RS 4 .\} .nf class XLintStatic { static void m1() { } void m2() { this\&.m1(); } } .fi .if n \{\ .RE .\} コンパイラは次の警告を生成します。 .sp .if n \{\ .RS 4 .\} .nf warning: [static] static method should be qualified by type name, XLintStatic, instead of by an expression .fi .if n \{\ .RE .\} この問題を解決するために、次のように\fIstatic\fRメソッド\fIm1\fRを呼び出すことができます。 .sp .if n \{\ .RS 4 .\} .nf XLintStatic\&.m1(); .fi .if n \{\ .RE .\} あるいは、\fIstatic\fRキーワードをメソッド\fIm1\fRの宣言から削除することもできます。 .RE .PP try .RS 4 try\-with\-resources文を含む、\fItry\fRブロックの使用に関する問題について警告します。たとえば、\fItry\fRブロックで宣言されたリソース\fIac\fRが使用されないために、次の文に対して警告が生成されます。 .sp .if n \{\ .RS 4 .\} .nf try ( AutoCloseable ac = getResource() ) { // do nothing} .fi .if n \{\ .RE .\} .RE .PP unchecked .RS 4 Java言語仕様で指定されている未検査変換警告の詳細を示します。たとえば、次のようになります。 .sp .if n \{\ .RS 4 .\} .nf List l = new ArrayList<Number>(); List<String> ls = l; // unchecked warning .fi .if n \{\ .RE .\} 型の消去中に、型\fIArrayList<Number>\fRおよび\fIList Other Java examples (source code examples)Here is a short list of links related to this Java javac.1 source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.