質問: CalcLogic.hiku(a, b); System.out.println("足すと" + total + "、引くと" + detal); } } エラー: メイン・メソッドがクラスMainで見つかりません。次のようにメイン・メソッドを定義してください。 public static void main(String[] args) またはJavaFXアプリケーション・クラスはjavafx.application.Applicationを拡張する必要があります ### 試したこと 参考書にあるコードをそのまま入力 ### 補足情報(言語/FW/ツール等のバージョンなど) Java 複数クラスのコンパイル
回答: > > それぞれのソースファイルに対応したクラスファイル > > > 上記の記載からソースファイルは2つあることが想定されますので、複数クラスというのが複数ファイルということであれば、他の解答者さんのご回答でコンパイル可能なのではないかと思います。 もし、質問に記載のコードが1ファイルとして作成されているものなのであれば、パブリッククラスは1ファイルに1つまで、またパブリッククラス名とファイル名は一致しなければいけないという制約があります。 もしファイルを`Calc.java`として作成されているのであれば CalcLogic の`public`を削除頂き、`CalcLogic.java`として作成されているのであれば、Calcの`public`を削除頂くとコンパイル可能になるかと思います。 上記の場合も、コンパイル後はCalc.class、ClascLogic.classの2つのクラスファイルがそれぞれ作成されます。 追記: 上記は検証せずに回答していましたが、実際に確認すると下記エラーとなったため、実際の内容とは異なるかもしれません。やはりきちんと複数ファイル作成されているものと推察します。 ``` CalcLogic.java:14: エラー: クラス Calcはpublicであり、ファイルCalc.javaで宣言する必要があります public class Calc { ^ エラー1個 ``` 追記2: コンパイル時ではなく、コンパイル後に作成されたクラスファイルを実行すると下記のようになりました。 javaコマンドで実行する際は、mainメソッドのあるクラスの方から実行する必要があります。 実際の状況とは異なる可能性もあるかもしれませんが、回答に追記します。 ``` > java Calc 足すと12、引くと8 ``` ``` > java CalcLogic エラー: メイン・メソッドがクラスCalcLogicで見つかりません。次のようにメイン・メソッドを定義してください。 public static void main(String[] args) またはJavaFXアプリケーション・クラスはjavafx.application.Applicationを拡張する必要があります ```