Error: Could not find or load main class の原因と解決方法。検証済みの解決コマンド付きで、現象→原因→解決→確認の順に最短で直せます。
このエラーが出ていませんか
Error: Could not find or load main class結論
結論:まずこれで直ります
「Error: Could not find or load main class」は、JVMが指定されたクラスをクラスパス上で見つけられない場合に発生します。下の解決コマンドを順に実行すれば直ります。
cd /tmp/javatest
java -cp . Helloどんなエラーか
次の操作を行うと(検証環境: eclipse-temurin:17)、上記のエラーが発生します。まずは下の再現コマンドで、同じ状況を再現できることを確認してください。
検証環境:eclipse-temurin:17
mkdir -p /tmp/javatest
cat > /tmp/javatest/Hello.java << 'EOF'
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
EOF
cd /tmp/javatest
javac Hello.java
java -cp /wrong/path Helloなぜ起きるのか
「Error: Could not find or load main class」は、JVMが指定されたクラスをクラスパス上で見つけられない場合に発生します。主な原因は `-cp`(`-classpath`)オプションで指定したパスが間違っているか、そもそも指定していないことです。Javaはクラスファイル(.class)をクラスパスから検索するため、正しいディレクトリを `-cp .`(カレントディレクトリ)や `-cp /path/to/classes` で明示する必要があります。`javac` でコンパイル後、カレントディレクトリに `.class` ファイルが生成される場合は `-cp .` を付けて実行するのが基本です。また、パッケージ構造がある場合はパッケージルートのディレクトリを `-cp` に指定し、クラス名も `com.example.Hello` のように完全修飾名で指定する必要があります。
解決手順
cd /tmp/javatest
java -cp . Hello直ったか確認する
cd /tmp/javatest
output=$(java -cp . Hello)
echo "$output"
echo "$output" | grep -q 'Hello, World!' && exit 0 || exit 1動画で見る
この手順でも直らない場合は。
エラー文をそのまま貼り付けて送っていただければ、原因の当たりをつけてお返しします。 ヒアリングは無料です。業務システムの内製化・保守のご相談も受け付けています。
無料相談を申し込む