質問: ### 前提・実現したいこと すっきりわかるJava入門という本に沿ってJavaを独学しています。 現在パッケージと実際のフォルダ階層についての部分について学んでいるのですが、コマンドプロンプトよりjavaを実行すると下記のようなエラーになり実行することができません。 ●フォルダの構造 ーーーーーーーーー work/(クラスパスのフォルダ) └calcapp/ ├main/ │ └Calc.class(calcapp.mainパッケージ) └logics/ └CalcLogic.class(calcapp.logicsパッケージ) ●エラー ーーーーーーーーー c:\dev>java calcapp.main.Calc エラー: メイン・クラスcalcapp.main.Calcを検出およびロードできませんでした 原因: java.lang.ClassNotFoundException: calcapp.main.Calc ### 試したこと 試しに.javaファイルも各フォルダに置いてみたら実行でき、正常に表示されました。 ●フォルダの構造を下記に変更 ーーーーーーーーー work/(クラスパスのフォルダ) └calcapp/ ├main/ │ ├Calc.java (←コンパイル前の.javaファイルを新たに配置) │ └Calc.class(calcapp.mainパッケージ) └logics/ │ ├CalcLogic.java (←コンパイル前の.javaファイルを新たに配置) └CalcLogic.class(calcapp.logicsパッケージ) 私が本を読んだ限りでは.classファイルだけをコピーして置けばいいという解釈だったのですが、私の理解不足なのでしょうか。 色々調べてみたのですが、同じような件について見つけられずに困っています。 おそらくかなり初歩的な質問だとは思いますが、よろしくお願いいたします。 ### 補足情報(FW/ツールのバージョンなど) 同じPCに AdoptOpenJDK と pleadis が入っており、今は本に沿ってAdoptOpenJDKにて開発をしています。
回答: 実行ディレクトりで `ls -l ./calcapp/main/Calc.class` を実行してファイルがありますか? ファイルのパーミッションは読める属性になっていますか? ソースコードに `package calcapp.main` を書いてありますか? ソースコード内のクラス定義は `public class Calc` になっていますか? ソースコード内のmainメソッド定義は `public static void main(String[] args) {` になっていますか?