javaコマンドで"エラー:メイン・クラスorg.macho.Mainが見つからなかったかロードできませんでした。"とエラーが出る。

はじめに

いつもjavaのプログラムを書いたときはeclipseから実行していて、恥ずかしながらコマンドラインからjavaコマンドで実行することがほとんどありませんでした。今回、java.io.Consoleを使ったプログラムを実行するのにjavaコマンドで実行する必要があったのですが、いざjavaコマンドで実行すると上手くいきませんでした。その問題の解決策を調べても直接の解決策がなかなか見つかりませんでした。同じ問題に直面した方の参考になればと思い、この記事にEclipseで作成したjavaファイルをコンパイルし実行する方法を残そうと思います。

java経験をお持ちの方には当然のことを記述しているように感じると思います。悪しからずご容赦ください。

前提

事象

以下のようなプログラムを作成し、javacコマンドでコンパイルjavaコマンドで実行しようとすると、以下の例のようにエラーメッセージが出ます。

/Users/*****/work/eclipse/Test/TestProject
    ┗ org
        ┗ macho
            ┗ Main.java
package org.macho;

public class Main {
    public static void main(String[] args) {
        System.out.println("main");
    }
}

次のようにjavaコマンドを実行しましたが、できませんでした。

# 前提としてカレントディレクトリは以下でした。※ユーザー名は*で伏せました。
*****-no-MacBook-Air:macho **********$ pwd
/Users/**********/work/eclipse/Test/TestProject/src/org/macho
*****-no-MacBook-Air:macho **********$ ls
Main.java

# コンパイル
*****-no-MacBook-Air:macho **********$ javac Main.java

# javaコマンド
*****-no-MacBook-Air:macho **********$ java Main
エラー: メイン・クラスMainが見つからなかったかロードできませんでした

他にも、classpathオプションを指定するなどいろいろやってみましたが結果は変わらず。

*****-no-MacBook-Air:macho **********$ java org.macho.Main
エラー: メイン・クラスorg.macho.Mainが見つからなかったかロードできませんでした
*****-no-MacBook-Air:macho **********$ java -classpath /Users/**********/work/eclipse/Test/TestProject/src/org/macho Main
エラー: メイン・クラスMainが見つからなかったかロードできませんでした
*****-no-MacBook-Air:macho **********$ java -classpath /Users/**********/work/eclipse/Test/TestProject/src/org/macho org.macho.Main
エラー: メイン・クラスorg.macho.Mainが見つからなかったかロードできませんでした

もちろん、javaのパスは通っていました。(java - versionで確認)

*****-no-MacBook-Air:macho **********$ java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)

解決策

以下のように、【プロジェクト(ここではTestProject)】/srcまで移動してからjavaコマンドを実行すると成功しました。

*****-no-MacBook-Air:macho **********$ cd ../../
*****-no-MacBook-Air:src **********$ pwd
/Users/**********/work/eclipse/Test/TestProject/src
*****-no-MacBook-Air:src **********$ java org.macho.Main
main
*****-no-MacBook-Air:src **********$ 

以上です。最後まで見ていただき、ありがとうございました。