質問: calcapp.logics.CalcLogics.hiku(a,b); System.out.println("足すと"+total+"引くと"+delta); } } ``` ``` //logics package calcapp.logics; public class CalcLogics{ public static int tasu(int x, int y){ return x+y; } public static int hiku(int x, int y){ return x-y; } } ``` ### 試したこと 実行する際にcdコマンドを使いmainまで移動して実行もしました. C:\Users\ryuji\java\calcapp\main>java Calc エラー: メイン・クラスCalcが見つからなかったかロードできませんでした ### 補足情報(FW/ツールのバージョンなど) ファイルは User/ryuji/java/calcapp/main←このmainにCalc.javaが入っています. User/ryuji/java/calcapp/logics←このlogicsにCalcLogics.javaが入っています. 使っているのはVisual Studio Codeです. OSはWindowsです.
回答: Calc.java に package calcapp.main; を書いてください。 そしてコマンドプロンプトで次のように打ち込んでください。 cd C:\Users\ryuji\java javac .\calcapp\main\Calc.java -encoding cp932 javac .\calcapp\logic\CalcLogic.java -encoding cp932 java calcapp/main/Calc コンソールのコードページを utf-8 にしている場合は -encoding utf-8 です。 ### 追記 package宣言 | Javaコード入門 > > パッケージの名前は、一般的に自分が所有しているドメインを逆にしたもの――mynavi.example.comを所有しているのであれば、パッケージ名はcom.example.mynaviで始まるようにすべきです。これによって、パッケージが一意であることを保証できるからです。 > > また、**クラスの保存先はパッケージ階層に対応していなければなりません**。com.example.mynavi.objectパッケージに属するクラスは、/com/example/mynavi/objectフォルダーに保存しなければなりません。 > > > **実行できないのはつまり、calcapp.main パッケージに属さない Calc クラスがディレクトリ calcapp\main にあるから**です。 これを解消する方法は、**既に書いたように、パッケージ宣言を書いてそのディレクトリに置けるようにする**、または Calc.class をカレントディレクトリに置くこと(こちらは推奨しません)です。 そしてディレクトリ構成、つまりパッケージの名前が良くありません。上記リンク先に書いてあるように、自分の所有しているドメイン名から作成し、他の作者の作ったパッケージと競合しないようにすることが推奨されています。 Javaのパッケージ名の命名には2019年でも所持ドメインの逆順を使うべきなのか調べた - Qiita このページにも書かれているように、確かにそれは必ずしも守られているとは限りませんが、無用な混乱やバグの混入を防ぐためにも、推奨されていることを守るのが良いでしょう。 ドメインを所有していない場合には、次のパッケージ名登録/利用サービスを利用するという手もありますね。 パッケージ名登録/利用サービスについて また、GitHub に登録し、その URL を使うという人もいるようです。