スポンサードリンク

【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("こんにちは!");
}
}

すると、案の定以下のように怒られます。

C:\Users\ysk\Desktop\java>javac CompileErr.java
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("こんにちは!");
}
}

これをコンパイルすると、次のように怒られます。

C:\Users\ysk\Desktop\java>javac CompileErr.java
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("こんにちは!");
}
}

これをコンパイルすると、やっぱり怒られます。

C:\Users\ysk\Desktop\java>javac CompileErr.java
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
     メモリのスタック領域が不足した場合に発生する

コメント

まだコメントはありません。

コメントフォーム
お名前
コメント