Java-コンパイル

Javaのコンパイラ

Javaのソースコードから実行ファイル(javaではバイトコードのクラスファイル)を作成するには「javac」というコンパイラを利用します。

javacは、JDKなどに付属しているコンパイルを実行するためのツールです。


JVM(Java Virtual Machine)について

JVMは、Javaの仮想マシンであり、Javaランタイム環境によって実行されるマシンです。

Javaコンパイラは、Java仮想マシン上で実行できるコードを作成し、それをJavaインタプリタが実行します。

つまり、Javaでは実行形式ファイルを作成せず、クラスファイルを作成する仕様となっています。


コンパイルと実行

1.ソースファイルの作成

Javaソースファイルの拡張子は「.java」とします。


$ touch HelloWorld.java

publicなクラスのクラス名とファイル名が異なる場合にコンパイルエラーが発生します。

publicなクラスがある場合は、ファイル名はクラス名と一致している必要があります。

例えば、クラス名がHelloWorldであるのに対し、ファイル名がTest.javaとなっているとエラーとなります。


2.ソースコードの記述

例として、Hello worldプログラムを記述します。


public class HelloWorld{  
    public static void main(String [] args) {   
        System.out.println("Hello world!");  
    }   
}

3.コンパイル

バイトコードのクラスファイルを作成します。

コンパイルすると、クラスファイル(.class)が作成されます。


$ javac HelloWorld.java 
$ ls
HelloWorld.class  HelloWorld.java

4.実行

クラスファイルを指定して、Javaインタプリタで実行します。

なお、クラスファイルのパスを指定しても実行できません。


$ java HelloWorld
Hello world!

コンパイル時の文字コードエラー

コンパイルする際、javaソースコードに記述したコメントなどの文字コードとシステムの文字コードが異なる場合、以下のようなエラーが出力されます。


警告:この文字は、エンコーディング SJIS にマップできません。

これは、javaコンパイラがOSのデフォルト文字コードに一時的に変換しようとするため発生するエラーです。

この場合、コンパイル時の文字コード指定をする必要があります。

オプション「-encoding 文字コード」で指定します。


$ javac -encoding utf-8 Hello.java

関連ページ