質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

3回答

1136閲覧

複数クラスのコンパイルができません。

gondawara_mari

総合スコア6

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2017/10/11 01:07

###前提・実現したいこと
無事コンパイルが終了するとそれぞれのソースファイルに対応したクラスファイルが生成されると参考書にあります。

###発生している問題・エラーメッセージ

エラーメッセージ

###該当のソースコード
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); }

}

public class Calc {

public static void main(String[] args) { int a = 10; int b = 2; int total = CalcLogic.tasu(a, b); int detal = CalcLogic.hiku(a, b); System.out.println("足すと" + total + "、引くと" + detal); }

}

エラー: メイン・メソッドがクラスMainで見つかりません。次のようにメイン・メソッドを定義してください。
public static void main(String[] args)
またはJavaFXアプリケーション・クラスはjavafx.application.Applicationを拡張する必要があります

###試したこと
参考書にあるコードをそのまま入力

###補足情報(言語/FW/ツール等のバージョンなど)
Java 複数クラスのコンパイル

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

それぞれのソースファイルに対応したクラスファイル

上記の記載からソースファイルは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を拡張する必要があります

投稿2017/10/11 02:05

編集2017/10/11 02:20
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

エラーメッセージ(?)にJavaFX云々が出てくるのはJavaFXだとmainメソッドが不要だからだと思います。本件についていえばそこは気にしなくてよいでしょう。

ポイントは実行する際のjavaコマンドのパラメータであるように思います。

デフォルトパッケージかつコンパイルしたクラスファイルがカレントディレクトリにできていると仮定すると

java -cp . Calc

などとすべきですが、誤って

java -cp . Main

とやってしまったのではないでしょうか?


本回答は質問者さんがIDEを使わずに、javac, javaを使ってコンパイルや実行をしようとしていると仮定しています。

投稿2017/10/11 01:47

編集2017/10/11 01:54
KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swordone

2017/10/11 01:50

JavaFX云々はメインメソッドがない場合の一般のエラーメッセージとして出てくるものなので、そこは責めるポイントではないと思います。
KSwordOfHaste

2017/10/11 01:55 編集

自分のコメントはswordoneさんと同じことを考えて「そのメッセージが出ることは問題でない」といったつもりでしたが、その点が不明瞭だったので、若干修正してみました。 ご指摘ありがとうございました。
swordone

2017/10/11 01:56

よく読んだらそうでした。失礼しました。
guest

0

class CalcLogicをCalcLogic.java、class CalcをCalc.javaという名称で保存しているでしょうか。ファイル名の大文字小文字の違いはコンパイラーの動作に影響しますので、calc.javaなどの名前で保存していたら正常に通りません。


先にJavaFXプロジェクトとして作成していないか?という記述をしましたが、それは誤回答であるという指摘を受け、その通りでありましたので、回答から除かせていただきました。申し訳ありません。

投稿2017/10/11 01:39

編集2017/10/11 01:59
keicha_hrs

総合スコア6768

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swordone

2017/10/11 01:50

JavaFX云々はメインメソッドがない場合の一般のエラーメッセージとして出てくるものなので、そこは責めるポイントではないと思います。
keicha_hrs

2017/10/11 01:56

「責めた」つもりはないのですが、誤った回答なのは確かだったので、そこはお詫びします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問