やり直しJava

Hello World

Hello World

ソースコード

Javaでは CやC++と違い、アプリケーションのエントリポイントであるmainメソッドもクラスに所属させる必要があります。

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

コンパイル

Eclipse

Eclipseでソースを編集している場合は、編集中にも随時コードチェックが行われ、ファイルを保存するたびにコンパイルが行われます。

コマンドライン

コマンドラインでコンパイルする場合はjavacコマンドを使います。

prompt> javac HelloWorld.java

HelloWorld.javaファイルと同じディレクトリ(フォルダ)にHelloWorld.classファイルが作成されます。

デバグ時にローカル変数にアクセスできるようにするには「-g」オプションを付けます。

prompt> javac -g HelloWorld.java

実行

Eclipse

Eclipse上で実行する場合は、ツールバーの「実行」ボタンを押してプログラムを実行します。

コマンドライン

コマンドラインで実行する場合はjavaコマンドを使います。javacコマンドと違ってファイル名ではなくクラス名を指定する点に注意が必要です。

prompt> java HelloWorld.java

デバグ

Eclipse

Eclipse上でデバグする場合は、ツールバーの「デバグ」ボタンを押してデバグを開始します。Javaパースペクティブからデバグパースペクティブに切り替わり、デバグに適したビューが表示されます。

コマンドライン

コマンドラインでデバグする場合はjdbコマンドを使います。javaコマンドと同様にファイル名ではなくクラス名を指定します

prompt> jdb HelloWorld.java

jdbでは様々なコマンドを使ってデバグを行います。「help」と打つとjdbで利用できるコマンドの説明が表示されます。jdbの主なコマンドを次に示します。

分類コマンド概要
ブレークポイントstop at <クラス>:<行番号>行番号を指定してブレークポイントを設定します。
stop in <クラス>:<メソッド>メソッドの開始行にブレークポイントを設定します。
clear(名前とは裏腹に)ブレークポイントの一覧を表示します。
clear <クラス>:<行番号>行番号を指定してブレークポイントをクリアします。
clear in <クラス>:<メソッド>メソッドの開始行のブレークポイントをクリアします。
操作系run [クラス [引数]]アプリケーションのメインクラスを実行します。ブレークポイントで止まります。
contブレークポイントから実行を続行します。次のブレークポイントで止まります。
step1行ずつステップ実行します。メソッドを呼び出している行ではメソッドの中には入りません。
stepi1命令ずつステップ実行します。メソッドを呼び出している行ではメソッドの中に入ります。
step up現在のメソッドがメソッドの呼び出し元に戻るまで実行します。
up [フレーム数]スレッドのスタックを上に移動します。
down [フレーム数]スレッドのスタックを下に移動します。
出力系print <式>式や変数の値を出力します。
locals現在のスタックフレームの全てのローカル変数を出力します。
threadsスレッドのリストを出力します。
where [<スレッドID> | all]スレッドのスタックをダンプします。
list [行番号|メソッド]実行中のソースコードを出力します。
変更系set <値> = <式>フィールドや変数の値を変更します。

コマンドラインでの操作はとても面倒なので、IDEを使える環境であればIDEを使った方がデバグの効率が上がります。