【Java】コンパイルエラーと実行エラー
Java学習初期でのエラーには、コンパイルエラーと実行エラーがあります。
ここではその2つを説明します。
1.コンパイルエラーとは?
コンパイルエラーとは、作成したJavaプログラムをコンパイル(中間コードを生成)するときに起きるエラーです。
具体的には、コマンドプロンプトで「javac ファイル名.java」でエンターを押した直後に起きるエラーのことです。
どんな場合に起きるの?
作成したjavaファイルとクラス名が違う場合
作成したjavaファイルとクラス名は必ず同じにしなければなりませんが、それが違った場合はコンパイルエラーとなります。
では、「CompileErr.java」というファイルを作成し、以下のプログラムを入力してコンパイルしてみたいと思います。赤文字の部分は「CompileErr」としなければならないのに、「Lesson」となっています。
public class Lesson{
public static void main(String args[]){
System.out.println("こんにちは!");
}
}
すると、案の定以下のように怒られます。
CompileErr.java:1: エラー: クラスLessonはpublicであり、ファイルLesson.javaで宣言
する必要があります
public class Lesson{
^
エラー1個
なお、エラーが起きたときは赤文字の部分でエラーの原因となっている行を教えてくれます。この場合は「1」なので1行目にエラーの原因があります。
単純に記述ミスがある場合
Javaプログラムのコードに記述ミスがある場合、コンパイルエラーとなります。
下のプログラムを見ると、「System.out.prinln("こんにちは!")」の「prinln」にミスがあります。正しくは「println」です。
public class CompileErr{
public static void main(String args[]){
System.out.prinln("こんにちは!");
}
}
これをコンパイルすると、次のように怒られます。
CompileErr.java:3: エラー: シンボルを見つけられません
System.out.prinln("こんにちは!");
^
シンボル: メソッド prinln(String)
場所: タイプPrintStreamの変数 out
エラー1個
これもまた、「3」行目にミスがあることを教えてくれます。
全角スペースがある場合
Javaでは、インデントのために全角スペースを使用するのは厳禁です。使用した場合、コンパイルエラーとなります。
以下のJavaプログラムには見えませんが、全角のスペースがあります。
public class CompileErr{
public static void main(String args[]){
System.out.prinln("こんにちは!");
}
}
これをコンパイルすると、やっぱり怒られます。
CompileErr.java:3: エラー: \12288は不正な文字です
System.out.prinln("こんにちは!");
^
エラー1個
「\12288は不正な文字です」と出た場合は教えてくれた行に全角スペースが使われているので、それを削除してください。
2.実行エラーとは?
実行エラーとは、作成したJavaプログラムをコンパイルし、実行するときに起きるエラーです。
具体的には、コマンドプロンプトで「java ファイル名(クラス名)」でエンターを押した直後に起きるエラーのことです。
実行エラー一覧
実行エラーには以下のものがあります。
- java.lang.NoClassDefFoundError
必要なクラスが見つからない場合に発生する - java.lang.NoSuchMethodError
必要なメソッドが見つからない場合に発生する - java.lang.NullPointerException
参照したオブジェクトの値がnullの場合に発生する - java.lang.ArrayIndexOutOfBoundsException
配列の取り扱いにミスがある場合に発生する - java.lang.NumberFormatException
文字列を数値型に変換できない場合に発生する - java.lang.UnsupportedClassVersionError
コンパイル時と、実行時のJavaのバージョンが異なる場合に発生する - java.lang.ArithmeticException
数値を0で割った場合に発生する - java.lang.OutOfMemoryError
メモリのヒープ領域が不足した場合に発生する - java.lang.StackOverflowError
メモリのスタック領域が不足した場合に発生する
コメント
まだコメントはありません。