fmy711124
@fmy711124 (日高 史也)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Java(JDK) : 複数クラスのコンパイルについて

  1. 聞きたいこと : Javaの複数クラスのコンパイルがうまくいかないので、教えていただけないでしょうか

  2. 起きている問題 : スクリーンショットを載せました スクリーンショット 2020-12-08 22.41.09.png

  3. ソースコード :

//calc.java
public class Calc {
public static void main(String[] args) {
int a = 10; int b = 2;
int total = CalcLogic.tasu(a + b);
int delta = CalcLogic.hiku(a - b);
System.out.println("足すと" + total + "、引くと" + delta);
}
}

//calcLogic.java
public class CalcLogic {
public static int tasu(int a, int b) {
return (a + b);
}

public static int hiku(int a, int b) {
return (a - b);
}
}

5.問題について自分なりに考えたこと
参考書を読みながらその通りにやっているので、ファイルの作り方?とかが間違ってるのかなと考えました。
また、calc.javaの tasu hiku に波線がついているので、名前の付け方?に問題があるのかと、、

初投稿なのですが、よろしくお願いいたします。

0

8Answer

@fmy711124 Eclipse でプログラムを実行するとき、起動構成でメインクラスに main を指定していませんか? そのせいでエラーが出ているように見えます。メインクラスには Calc を指定してください。

1Like

Comments

  1. @fmy711124

    Questioner

    @uasi さん...!!
    エラーなく実行できました!!
    長らくお世話になりました。。大変感謝申し上げます。

    最後にもう一つだけ質問させてください!

    [ Eclipse でプログラムを実行するとき、起動構成でメインクラスに main を指定していませんか? そのせいでエラーが出ているように見えます。メインクラスには Calc を指定してください。 ]

    ↑uasiさんに言われた通りにしたらできたのですが、起動構成でメインクラスにmainを指定するとエラーが出るのは何故なのでしょうか。また、同様にメインクラスにCalcを指定するとうまく実行できるのは何故なのでしょうか。

    今後、このようなエラーが出てきた時に対処するため、また、同じようなエラーで困っている方達にエラーの原因を教えることができるようになりたいので、是非教えていただきたいです...!

    よろしければ、よろしくお願いいたします。
  2. うまくいったようでよかったです。

    Calc を指定すると動く理由についてですが、それにはメインクラスとは何かを知る必要があります。

    Java のプログラムは public static void main(String[]) というメソッドから実行が始まることが仕様で決まっています。このメソッドを持ったクラスをメインクラスと呼びます。

    メインクラスの名前は自由につけていい(ここでは Calc になっている)ので、どれがメインクラスかは Java の起動構成で指示してやらなければなりません。メインクラスを main と指定すると、そんな名前のクラスが見つからないので ClassNotFoundException が出ます。 Calc と指定すれば正しく動きます。

    main() メソッドと実行の仕組みについてより深く知るにはこの記事を参照してください https://engineer-club.jp/java-main
  3. @fmy711124

    Questioner

    とってもわかりやすい説明ありがとうございます!!参考記事まで...^^
    どれがメインクラスなのか、把握してなかったことが原因だとわかりました。

    問題解決にお付き合い頂き感謝申し上げます。ありがとうございました
int total = CalcLogic.tasu(a + b);
int delta = CalcLogic.hiku(a - b);

引数の渡し方が間違っています。正しくは

int total = CalcLogic.tasu(a, b);
int delta = CalcLogic.hiku(a, b);

です。

0Like

@uasi さん、御回答ありがとうございます!!^_^
スクリーンショット 2020-12-09 1.06.03.png

引数の渡し方を修正してみたのですが、上記画像のようなエラーが出てしまいました...
どこか間違っているかわかりますでしょうか?

* 変更を加えたコードは、引数の渡し方のところだけです。

0Like

Java が正しくインストールされていないように見えます。どうやってインストールしましたか?

0Like

Comments

  1. @fmy711124

    Questioner

    @uasiさん
    VSCodeでJava Extension Packをインストールしました!
    やり方はネットで調べた通りにしたつもりです...
  2. もしかして CalcLogic.java の1行目に import org.graalvm.(略) と書いてありますか? であれば tamura__246 さんのおっしゃるように削除してみるとよさそうです。
  3. 書いてないとするとやはりインストールがうまくいっていないのかもしれません。どのページを参考にしましたか?

@uasi さん、@tamura__246さん、ご回答ありがとうございます。
お二方がおっしゃるようなimport文は確認したところありませんでした。
以下画像のように、Calc.javaクラスの、tasu と hiku に赤線が引いてあるので、何かそこが間違っているのでしょうか。。スクリーンショット 2020-12-10 0.25.59.png

Eclipseで書いてみても、このようにエラーでした。。

0Like

@fmy711124 そこに赤線が出るのは最初の回答で指摘した間違いがそのままになっているからです。またメソッドが public static void calc になっていますが public static void main でなければなりません。

0Like

@uasiさん、
すみません、凡ミスでした。
一応訂正しましたが、検出及び検出及びロードできない、とのエラー分でした。

以下、ダウンロードで参考にしたページです。
https://mergedoc.osdn.jp/

また、スクリーンショットも載せておきます。
お忙しいところ申し訳ないです。。。スクリーンショット 2020-12-10 23.06.04.png
スクリーンショット 2020-12-10 23.06.08.png

0Like

Your answer might help someone💌