<<前ページ目次|次ページ>>
付録 どこ?どこなの?
〜コンパイルと実行〜
 プログラムのコンパイルと実行については、詳しく解説しませんでした。ここではWindowsでコマンドラインから、「javac」と「java」のふたつのコマンドを使って、コンパイル、実行する方法を、ごくシンプルにまとめておきます。


例1

 まずは復習。図にあるように、ディレクトリwkの下に、javaのクラスAを記述したファイルA.javaがあるとします。カレントディレクトリは太い矢印で示されたwkです。(最後までここから頑として動きません。)
[A.java]
public class A {
    public void methodA() {
        System.out.println("A");
    }

    public static void main(String[] args) {
        A a = new A();
        a.methodA();
    }
}
 このソースファイルA.javaのクラスAをコンパイルするには、
    javac A.java
とします。下線部に指定するのは、クラス名ではなくファイル名です。後ろの「.java」の部分を忘れずに付けましょう。図で青く示すように、コンパイル済みのクラスファイル「A.class」が作成されます。これを実行するには
   java A
とします。下線部には今度はクラス名を指定します。「.class」はないですよね。「A」と出力されます。ここまでは復習。これから少しずつややこしくなります。



例2

 では次のような場合、
   javac src\A.java
 でコンパイルすると、クラスファイルはどこに作られるでしょうか?


 A.classは次のように、ソースファイルと同じディレクトリに作られます。カレントディレクトリwkの下ではないことに注意。



 ではこれを実行するにはどうしましょう。カレントディレクトリはwkのままですよ。

   java src\A

ブッブー!下線部はあくまでクラス名なので、「A」でなければなりません。srcの下のクラスA(クラスファイルA.class)を実行したいときには、「-classpath」の指定を利用します。こんな具合。

   java -classpath src A


例3

 今度はパッケージを絡めてさらにステップアップ!パッケージについては第8章で解説しました。ここでは簡単のためにクラスAをパッケージx.y.zに入れることにしましょう。その場合ソースファイルA.javaの1行目に
   package x.y.z;
を入れるのでしたね。また「.」で区切られた部分がディレクトリに対応するので、ソースファイルA.javaはx\y\zの下に作ります。先ほどの流れでこれをsrcの下に図のようにぶら下げましょう。


 コンパイルの場合指定するのはファイル名ですから

   javac src\x\y\z\A.java

となります。図の位置にA.classが作成されます。実行はクラス名ですから

   java -classpath src x.y.z.A

となります。ここでいうクラス名は、第8章のフルネームのクラス名になります。気をつけましょう。この指定で、srcの下のxの下のyの下のzの下のA.classが見つけられることはいいですね。


例4

 ソースファイルとクラスファイルは別ディレクトリにしたい、という場合もあります。次のようにclassesの下にクラスファイルを作りましょう。


 この場合、コンパイル時に「-d」でクラスファイルを出力したいディレクトリclassesを指定します。このときclassesは作成済みでなければなりません。

   javac -d classes src\x\y\z\A.java

 実行は次のようになります。

   java -classpath classes x.y.z.A


例5

 では次のように、クラスAの中で、クラスBを利用している場合を考えましょう。二つのソースファイルは図の位置にあるとします。
[A.java]
package x.y.z;
public class A {
    public static void main(String[] args) {
        B b = new B();
        b.methodB();
    }
}
[B.java]
package x.y.z;
public class B {
    public void methodB() {
        System.out.println("B");
    }
}

 実は次でA.classだけでなく、B.classも作成されるのです。

   javac -d classes -sourcepath src src\x\y\z\A.java

 コンパイラはどうやってB.javaを探し出すのでしょうか。まずプログラムを見てみましょう。クラスAではクラスBを利用するとき単にBと呼んでいるので、Bは同じパッケージx.y.z内にあることがわかります。またjavacで指定した「-sourcepath」は、コンパイルに必要なソースファイルはここのディレクトリにありますよ、ということを示します。そこでB.javaをsrcの下のxの下のyの下のzの下に見つけられるのです。見つけたB.javaは自動的にコンパイルされ、図の青のようになります。実行は

   java -classpath classes x.y.z.A

で行います。

 ソースファイルは「-sourcepath」のディレクトリの下、クラスファイルは「-classpath」のディレクトリの下から探し出されます。正確に指定しないと、必要なファイルが見つからず、あえなくエラーになってしまいます。


 クラスファイルは「-classpath」でその位置を指定しなければなりません。では、今までよく使った「String」という文字列を扱うクラスも同様でしょうか?いいえ、標準ライブラリのクラスを利用する場合、これらは自動的に取り込まれるので「-classpath」で指定する必要はありません。
例6
 最後にEclipse(バージョンは3.0)を利用する場合に触れておきましょう。ちなみにここではすべていろいろな設定はデフォルトのままとします。
@プロジェクトの作成
 まずはメニューバーの
   ファイル→新規→プロジェクト
でプロジェクトを作成します。「Javaプロジェクト」を選び、プロジェクト名は「ProjectX」にしておきます。他はデフォルト値にしておくと、Eclipseのワークスペースの下に、プロジェクト名と同じディレクトリができます。またソースファイルを格納するsrcと、クラスファイルを格納するbinというディレクトリが、その下に図のように作成されます。

Aクラスの作成
 続いて
   ファイル→新規→クラス
でクラスを作成します。ソースフォルダは「ProjectX/src」になっているはずです。パッケージx.y.zにクラスAを図のように作るのであれば、「パッケージ」に「x.y.z」、「名前」に「A」を指定します。このクラスにメソッドmainを含めるのであれば、「どのメソッド・スタブを作成しますか?」のところで、mainのチェックをオンにしてください。これでsrcの下にx、その下にy、その下にz、その下にA.javaが作られ、このクラスのエディタ画面になるので、ここにプログラムを入れてください。先ほどmainにチェックが入れてあれば、少し楽にmainメソッドが入力できるでしょう。

Bコンパイル、実行
 パッケージ・エクスプローラーのA.javaで右クリック、
   実行→Java Application
で、binの下にx、y、z、その下にA.classが図のように作られ、これが実行されます。

 ざっと基本的には上のようになりますが、プロジェクトのプロパティでいろいろな指定ができます。パッケージ・エクスプローラーのパッケージ名ProjectXで右クリック、プロパティを選択してください。いろいろ指定できますので試してみてください。
 
<<前ページ目次|次ページ>>
Copyright (c) 2004-2005 Nagi Imai All Rights Reserved.