Javaプログラミングを行った際に起こるエラーには「コンパイルエラー」と「実行時エラー」があります。
エラーが表示された際は、慌てずに落ち着いてポイントを絞って確認しましょう。
今回はコンパイルエラーの説明となります。
コンパイルエラー
コンパイルエラーはコンパイル時(javacコマンド利用時)に表示されるエラーで、文法のミスやコンパイルするファイル名を間違えるとコンパイルエラーとなります。
コンパイルエラーの具体例
ファイル名を間違えた場合
Hello.javaのファイル名をHeloo.javaと入力してしまった。
javac: ファイルが見つかりません: Heloo.java
使用方法: javac <options> <source files>
使用可能なオプションのリストについては、-helpを使用します
スペルミスの場合
System.out.printlnの頭文字をsystemと小文字で入力してしまった。
Hello.java:3: エラー: パッケージsystemは存在しません
system.out.println(“Hello Java”);
^
エラー1個
コンパイルエラー対策法
ファイル名が見つかりません。と表示された場合はファイル自体の名前を確認してそのファイル名を修正するか、javacコマンド右側のファイル名を修正しましょう。
それ以外のエラーの場合は、エラーの内容を覚えることも必要ですが、まずはエラーの行を確認しましょう。
エラー内容
Hello.java:3: エラー: パッケージsystemは存在しません
system.out.println(“Hello Java”);
^
エラー1個
プログラム内容
1 2 3 4 5 |
class Hello{ public static void main(String[] args){ system.out.println("Hello Java"); } } |
エラー内容の赤字の部分がエラーと思われる行数です。ただしエラーで表示されている行数に必ずエラーがあるとは限らないのでエラー行数の前後の行を確認する必要があります。
今回のケースでは、実際の記述ミスの行数とエラー表示の行数が同じになっています。
次の例は記述ミスの行数とエラー表示の行数が違う場合です。
エラー内容
Hello.java:5: エラー: 構文解析中にファイルの終わりに移りました
}
^
エラー1個
プログラム内容
1 2 3 4 5 |
class Hello{ public static void main(String[] args){ system.out.println("Hello Java"); } |
今回のエラーは}が一つ足りないことによるエラーです。もともとは4行目にあった}が消えている状態でコンパイルしようとした場合に起こります。
このエラーの場合は、5行目の}がmain()メソッドの}と判断されて、}が一つ足りないことを意味しています。ですので、5行目自体はエラーではなく、その前後の行に}を入れることでエラーを修正することができます。
また、一つの記述ミスで複数のエラーが表示される場合もありますので、上から一つずつ修正してコンパイルを行い確認しましょう。
※もちろん記述やエラーに慣れている場合は一度に複数修正してもかまいません。
エラー内容
Hello.java:2: エラー: ‘;’がありません
public static void main(String[] args)
^
Hello.java:5: エラー: class、interfaceまたはenumがありません
}
^
エラー2個
プログラム内容
1 2 3 4 5 |
class Hello{ public static void main(String[] args) System.out.println("Hello Java"); } } |
上記の間違いは2行目に{の入力し忘れによるエラーです。
このエラーの場合は、エラー箇所が2つになっていますが、1つの記述ミスによって複数エラーと解釈される場合もあります。
複数のエラーが表示された場合は、上から一つずつ(今回だと2行目付近)のミスを確認して修正できたら一度コンパイルして確認しましょう。
コンパイルエラー時のポイント
- 表示された行数だけでなく、前後の行も確認しよう
- 上から順序良く、一つずつ修正しよう
次の回では実行時エラーについての説明です。