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.output
をtrue
にセットします。出力メッセージをSystem.err
に送り出すためには、javac.pipe.output
をfalse
にセットします (つまりセットしません)。javac_g は jdb のようなデバッガに適した、javac の最適化されていないバージョンです。
- -classpath path
- javac がクラスを探すために使用するパスを指定します。デフォルトまたはCLASSPATH 環境変数が設定されている場合、その設定をオーバーライドします。ディレクトリはコロンで分割します。ディレクトリがクラスパス上にソースファイルを含む場合、これはかなり有効です。パスの最後にシステムクラスを常に含むようにします。たとえば、次のとおりです。
javac -classpath .:/home/avh/classes:/usr/local/java/classes ...
- -d directory
- クラスファイル階層のルートディレクトリを指定します。たとえば、次のようにします。
javac -d /home/avh/classes MyProgram.javaMyProgram.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,