Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaで「Could not find or load main class(メインクラスが見つからない、またはロードできませんでした)」エラーを解決する方法

Javaプログラムを作成したら、まず javac コマンドを使ってコンパイルします。この段階でコンパイルエラーが発生していれば、その内容が表示されます。

コンパイルエラーをすべて解消して正常にコンパイルが完了すると、現在のフォルダにクラス名と同じ名前で拡張子 .class の実行可能ファイルが生成されます。

次に、java コマンドを使ってプログラムを実行します。

java クラス名

しかし実行時に、JVM(Java仮想マシン)が指定された名前の .class ファイルを見つけられない場合、次のようなランタイムエラーが発生します。

D:\sample>java Example
Error: Could not find or load main class Example
Caused by: java.lang.ClassNotFoundException: Example

解決方法

このエラーを回避するには、実行時にクラスファイルの完全修飾名(パッケージ名を含む名前)を正しく指定する必要があります。以下に、このエラーが発生しやすい代表的なケースとその対処法を紹介します。

ケース1:クラス名の誤り

指定したクラス名が間違っている場合に発生します。

class Example {
    public static void main(String args[]){
        System.out.println("This is an example class");
    }
}

エラー例

D:\>javac Example.java
D:\>java Exmple
Error: Could not find or load main class Exmple
Caused by: java.lang.ClassNotFoundException: Exmple

対処法: 上記の例ではクラス名のスペルが誤っています(Exmple → Example)。正しいクラス名を指定して実行しましょう。

D:\>javac Example.java
D:\>java Example
This is an example class

ケース2:大文字・小文字の不一致

Javaは大文字と小文字を区別します。Example.javaexample.java は別のファイルとして扱われるため、クラス名はコンパイル時とまったく同じ表記で指定する必要があります。

class Example {
    public static void main(String args[]){
        System.out.println("This is an example class");
    }
}

エラー例

D:\>java EXAMPLE
Error: Could not find or load main class EXAMPLE
Caused by: java.lang.NoClassDefFoundError: Example (wrong name: EXAMPLE)

対処法: 大文字・小文字を正しく揃えて実行します。

D:\>javac Example.java
D:\>java Example
This is an example class

ケース3:パッケージ名の誤り

.class ファイルがパッケージ内に存在するのに、パッケージ名なしで実行したり、誤ったパッケージ名を指定したりした場合にもこのエラーが発生します。

package sample;
class Example {
    public static void main(String args[]){
        System.out.println("This is an example class");
    }
}

エラー例

D:\>javac -d . Example.java
D:\>java samp.Example
Error: Could not find or load main class samp.Example
Caused by: java.lang.ClassNotFoundException: samp.Example

対処法: 実行時には、.class ファイルが実際に存在する正しいパッケージ名を指定します。

D:\>javac -d . Example.java
D:\>java sample.Example
This is an example class

ケース4:「.class」拡張子を付けて実行している

プログラムを実行するときは、拡張子 .class を付ける必要はありません。クラス名だけを指定してください。

エラー例

D:\sample>java Example.class
Error: Could not find or load main class Example.class
Caused by: java.lang.ClassNotFoundException: Example.class

対処法: 拡張子を外してクラス名のみで実行します。

D:\sample>java Example
This is an example class

まとめ

「Could not find or load main class」エラーは、主にクラス名のタイプミス大文字・小文字の不一致パッケージ名の指定漏れや誤り不要な .class 拡張子の指定が原因で発生します。実行前にクラス名とパッケージ構成を確認すれば、ほとんどのケースは簡単に解決できます。

  1. 「Java SEランタイム環境が見つかりません」エラーの解決方法

    コマンドプロンプトから「java -jar xxxx.jar」のようなコマンドでJavaの.jarファイルを実行しようとした際に、以下のようなエラーメッセージが表示されることがあります。Error: opening registry key Software\JavaSoft\JREError: could not find java.dllError: Could not find Java SE Runtime Environment.エラーの主な原因このエラーは、以下のような要因によって発生します。レジストリの破損環境変数にJavaのパスが設定されていないJavaのインストールフォルダが

  2. 「Mscoree.dllが見つかりません」エラーの原因と解決方法を徹底解説

    「Mscoree.dllが見つかりません」というエラーは、Windowsのすべてのバージョンで発生しうる、非常に厄介なトラブルです。しかし、正しい手順に従えば簡単に解決できます。この記事では、エラーの仕組みから具体的な対処法まで、わかりやすく解説します。Mscoree.dllとは何か?Mscoree.dllは、Windowsの.NET Frameworkで使用される「ダイナミックリンクライブラリ(DLL)」ファイルです。.NET環境向けに開発されたプログラムは、このファイルがないと正常に動作しません。そのため、パソコンに.NET Frameworkがインストールされていない場合、このエラーが表