javac - Java コンパイラ

javac により、Java プログラムがコンパイルされます。

機能説明

   javac [ options ] filename.java ...
   javac_g [ options ] filename.java ...

説明

javac コマンドにより、Java ソースコードが Java バイトコードにコンパイルされます。そして Java インタプリタの java コマンドを、Java バイトコードの実行に使用します。

Java ソースコードは、ファイル名の最後に .java 拡張子が付いたファイルにする必要があります。また。クラスが public になっていたり、または他のソースファイルから参照される場合、そのファイル名は classname.java のように、クラス名から構成されなければなりません。

javac でコンパイルされたソースファイルで定義される各クラスのために、コンパイラは結果のバイトコードを classname.class という名前の クラスファイル に格納します。-d オプションを指定しない場合、コンパイラは、対応するソースファイルと同じディレクトリにクラスファイルを置きます。

コンパイラがユーザ自身のクラスを参照しなければならない場合、場所を指定する必要があります。これを行うために、-classpath オプションか CLASSPATH 環境変数を使用してください。クラスパスは一連のディレクトリ (または zip ファイル)です。javacが、コマンド引数として直接指定したファイルの中でまだ定義されていないクラスを探す、一連のディレクトリ (または zip ファイル)が、クラスパスです。コンパイラは、ソースファイルとクラスファイルの双方をクラスパスの中で探し、ソースファイルのほうが新しい場合には再コンパイルします(そしてクラスファイルを再生成します。)。

出力メッセージを System.out に送り出すためには、プロパティ javac.pipe.outputtrue にセットします。出力メッセージを System.err に送り出すためには、javac.pipe.outputfalse にセットします (つまりセットしません)。

javac_gjdb のようなデバッガに適した、javac の最適化されていないバージョンです。

オプション

-classpath path
javac がクラスを探すために使用するパスを指定します。デフォルトまたはCLASSPATH 環境変数が設定されている場合、その設定をオーバーライドします。ディレクトリはコロンで分割します。ディレクトリがクラスパス上にソースファイルを含む場合、これはかなり有効です。パスの最後にシステムクラスを常に含むようにします。たとえば、次のとおりです。
   javac -classpath .:/home/avh/classes:/usr/local/java/classes ...

-d directory
クラスファイル階層のルートディレクトリを指定します。たとえば、次のようにします。
   javac -d /home/avh/classes MyProgram.java
MyProgram.java ソースファイルの中のクラスから作られるクラスファイルが、ディレクトリ /home/avh/classes/demos/awt に保存されます。その場合クラスは、パッケージ demos/awt で定義されているものとします。

-d オプションと -classpath オプションによる効果は、独立的であることに注意してください。コンパイラはクラスパスからしか読み取らないし、出力ディレクトリにしか書き込みません。出力ディレクトリがクラスパス上にあれば、これはかなり有効です。-d オプションが指定されていない場合、ソースファイルは、パッケージ構成を示す階層ディレクトリに格納されます。

-encoding encoding name
EUCJIS/SJIS などのソースファイルエンコーディング名を指定します。このオプションを指定しない場合、プラットフォームのデフォルトのコンバータが使用されます。

-g
デバッグテーブルが生成されます。デバッグテーブルは、行番号とローカル変数についての情報、つまり Java デバッグツールによって使用される情報を含みます。デフォルトでは、最適化 (-O) が指定されていなければ、行番号だけが生成されます。

-nowarn
警告をオフにします。指定した場合、コンパイラはいかなる警告も表示しません。

-O
static、final および private なメソッドをインライン化することによって、コンパイルされるコードを最適化します。クラスはサイズが大きくなる可能性があることに注意してください。

-verbose
何のソースファイルがコンパイルされ、何のクラスファイルがロードされているかについての情報を、コンパイラとリンカに表示させます。

-depend
このオプションは、他のクラスファイルから参照されるクラスファイルを再コンパイルさせます。普通は、他のソースコードから参照されるファイルのうち、欠落した、または古くなったクラスファイルを再コンパイルするだけです。

-Jjavaoption
コンパイラを実行する Java インタプリタへ、文字列 javaoption を 1 つの引数として渡します。引数にはスペースを入れません。複数の引数は、すべて前置-J で始め一つずつ区分しなければなりません。これは、コンパイラの実行環境またはメモリの利用に有効です。

環境変数

CLASSPATH
ユーザ定義のクラスへのパスをシステムに指定します。ディレクトリはコロンで分割します。たとえば、次のとおりです。
.:/home/avh/classes:/usr/local/java/classes

参照

java, jdb, javah, javap, javadoc,