Code Fix

初級

Main method not found in class の原因と直し方

コンパイルは通るのに実行できない典型。JVMがmainを見つける条件を1つずつ確認します。

エラーメッセージの読み方

Error: Main method not found in class Main
Main method not found in class Main
JVM起動時のエラー — コンパイルは成功しています

このエラーが出る典型パターン

パターン1

 1  public class Main {
 2      public static void Main (String[] args) {
                             ^
 3          System.out.println("Hello");
 4      }
 5  }
Error: Main method not found in class Mainexited with code 1

JVMは起動時にmainという名前のメソッドを探します。コンパイルは通るため、実行して初めて失敗します。

直し方: Mainmain にします。

この問題を解いてみる →

広告
広告スロット(未設定)

パターン2

 1  public class Main {
 2      public              void main(String[] args) {
                     ^
 3          System.out.println("Hello");
 4      }
 5  }
Error: Main method is not static in class Mainexited with code 1

mainはインスタンスを作る前に呼ばれるので、staticでなければなりません。

直し方: (空)static にします。

この問題を解いてみる →

パターン3

 1  public class Main {
 2      public static void main(String   args) {
                                    ^
 3          System.out.println("Hello");
 4      }
 5  }
Error: Main method not found in class Mainexited with code 1

引数はString配列でなければmainとして認識されません。コマンドライン引数を受け取るための決まった形です。

直し方: StringString[] にします。

この問題を解いてみる →

パターン4

 1  public class Main {
 2      public static void main(String[] args, int x       ) {
                                                    ^
 3          System.out.println("Hello");
 4      }
 5  }
Error: Main method not found in class Mainexited with code 1

エントリーポイントとして認識されるのはString[]単独の引数を持つmainだけです。余分な引数があると別のメソッドとして扱われ、起動時に見つかりません。

直し方: , int x(空) にします。

この問題を解いてみる →

パターン5

 1  public class Main {
 2      private   static void main(String[] args) {
            ^
 3          System.out.println("Hello");
 4      }
 5  }
Error: Main method not found in class Mainexited with code 1

エントリーポイントはpublicでなければなりません。privateだとコンパイルは通っても、クラス外のJVMからは呼び出せません。

直し方: privatepublic にします。

この問題を解いてみる →

よくある誤解

「コンパイルが通った=正しい」ではありません。mainの綴りミスは実行時まで発覚しない代表例です。

まとめ

Main method not found in classは初級でつまずきやすい項目です。上の5パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。

演習をはじめる

関連するエラー

広告
広告スロット(未設定)