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

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

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

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

Q&A

解決済

3回答

2785閲覧

Javaに関する質問【エラー: メイン・クラスSample1が見つからなかったかロードできませんでした】

Beg

総合スコア10

Java

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

0グッド

1クリップ

投稿2019/03/25 13:12

前提・実現したいこと

実現したいこと:下記に発生しているエラーを取りたいです。

Java初心者です。
「スッキリわかる Java入門」を使って、開発環境Eclipseで下記のコードを作成しています。
(※)2017/4/2に「java_rookie」さんが類似の質問をされていますが、今回は少し異なっていて開発環境eclipseを使って開発していたら、下記のエラーが発生しました。

【フォルダ名】
Sample1
【下記の2つのクラスが入っているパッケージ】
デフォルトパッケージ
【クラス】
・Mainクラス
・Heroクラス

(やっていること)
■MainクラスとHeroクラスを作成します。
■Heroクラスには、操作メソッド(⇓)を定義しています。
①座る(sitメソッド)、②転ぶ(slipメソッド)、③逃げる(runメソッド)
■Mainクラスには、Heroインスタンスを生成し、勇者(Hero)の名前(=コウタ)とLifePoint(=100)と設定します。
そして、Heroクラスから操作メソッドを呼び出し、コンパイラで出力しようとしています。

両クラスとも、ソースに不備がないこと(波線や×マーク)を確認してから、コンパイルすると、下記のエラーメッセージが出力されました。

エラーは、下記のように出ました。
「エラー: メイン・クラスSample1が見つからなかったかロードできませんでした」

以下の【試したこと】もやってみましたが、バグが取れません。お手数ですが、アドバイスを頂けると幸いです。

下記に、ソースコードを掲載しております。

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

エラー: メイン・クラスSample1が見つからなかったかロードできませんでした

該当のソースコード

<Main.java>
public class Main {

public static void main(String[] args) { Hero h = new Hero(); h.name = "コウタ"; h.hp = 100; System.out.println("勇者" + h.name + "を生み出した。"); h.sit(5); h.slip(); h.sit(25); h.run(); }

}

<Hero.java>
public class Hero {

//属性を定義する。 String name; int hp; void sleep() { this.hp = 100; System.out.println(this.name + "は、眠って回復した。"); } void sit(int sec) { this.hp +=sec; System.out.println(this.name + "は、" + sec +"秒座った。"); System.out.println("HPが" + sec + "ポイント回復した。"); } void slip(){ this.hp -=5; System.out.println(this.name + "は転んだ!"); System.out.println("5のダメージを受けた!"); } void run() { System.out.println(this.name + "は、逃げ出した!"); System.out.println("GAME OVER"); System.out.println("最終HP" + this.hp + "だった!"); }

}

試したこと

クラスが分かれているので、クラス名「Hero」を指定する必要があるのかと思い、メソッド『h.sit(5);』の前にクラス名「Hero」をつけて、「Hero.h.sit(5);」としてみましたが、
エラーメッセージ「hは解決できないか、フィールドではありません」と返ってきました。

補足情報(FW/ツールのバージョンなど)

使用OS:windows10

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

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

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

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

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

nobadag

2019/03/25 13:57 編集

どのように、コンパイルしたか、教えてください。 コードの問題では、ないと思います。
Beg

2019/03/25 13:50

F11キーで行いました。
nobadag

2019/03/25 14:10

一度、コマンドプロンプトを使って、コンパイルしてみることをお勧めします。 私の環境では、成功しました。
退会済みユーザー

退会済みユーザー

2019/03/26 23:14

defaultパッケージは色々弊害があるからやめよう
Beg

2019/03/27 14:12

asahina1979さん ご回答ありがとうございます。了解しました。
Beg

2019/03/27 14:17

(アドバイスしてくださった皆様へ) お疲れ様です。無事、コンパイルできました。 原因は、[ツールバー]→[実行]→[実行構成]→[Javaアプリケーション]→[Sample1]→「メインタブ」の「メイン・クラス(M):」欄のクラスが「Sample1」になったままだからでした。なので、「メイン・クラス(M):」欄の右側にある「検索ボタン(S):」を押下して、メイン・クラス名を「Main –(デフォルト・パッケージ)」に修正しコンパイルすると正常に出力できました。 _ _ _ _ _ _ _ _ _ _ <出力結果> ミナトは、5秒眠った。 HPが5ポイント回復した。 ミナトは転んだ! 5のダメージを受けた! ミナトは、25秒眠った。 HPが25ポイント回復した。 ミナトは、逃げ出した! GAME OVER 最終HP125だった! _ _ _ _ _ _ _ _ _ _ 背景として、以前、別件でこのクラスを「Sample1クラス」としてJavaの勉強をしていました。 その後、クラス名を変更し今回のコードを書いていましたが、「メイン・クラス(M):」欄のクラスを「Sample1」から「Main –(デフォルト・パッケージ)」へ変更していなかったため、今回のエラーが発生しておりました。 以上です。ご協力、ありがとうございました。
guest

回答3

0

ベストアンサー

[実行]→[実行構成]→[Javaアプリケーション]で, [メイン]タブ内の[メイン・クラス]が Sample1 になっていませんでしょうか.

投稿2019/03/25 15:25

jimbe

総合スコア12632

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

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

Beg

2019/03/27 14:16

jimbeさん ご回答ありがとうございます。 頂いた回答で実行すると、Sample1になっておりました。ですので、メイン・クラスを「Main –(デフォルト・パッケージ)」へ変更すると、無事コンパイルできました。 ご協力ありがとうございました。
guest

0

一度、コマンドプロンプトで実行してみることをお勧めします。

cd/d <使用しているフォルダのパス>

で、移動してから、コンパイルします。

javac Main.java

すると、Mainクラスと、Heroクラスができるので、

java Main

とすると、私の環境では

勇者コウタを生み出した。 コウタは、5秒座った。 HPが5ポイント回復した。 コウタは転んだ! 5のダメージを受けた! コウタは、25秒座った。 HPが25ポイント回復した。 コウタは、逃げ出した! GAME OVER 最終HP125だった!

と、なりました。

なお、文字コードがUTF-8なら、

javac -encoding utf-8 Main.java

と、コンパイルしてください。

投稿2019/03/25 14:17

編集2019/03/25 14:21
nobadag

総合スコア37

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

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

mike2mike4

2019/03/25 14:26

たぶん、質問者さんはクラスファイルを分けてしまったために困っていると思います。nobadagさんのように一つのファイルにして、コマンドプロンプトで実行すればいいんですけど。
nobadag

2019/03/25 14:31

Eclipseは、普段使用しないので、よく存じ上げません。 私は、Visual Studio Code を使っています。 デバッグ機能があるのでそれを使っています。
Beg

2019/03/25 14:46

ご丁寧なご回答ありがとうございます。 ただいま、行っております。
Beg

2019/03/27 14:18

(アドバイスしてくださった皆様へ) お疲れ様です。無事、コンパイルできました。 原因は、[ツールバー]→[実行]→[実行構成]→[Javaアプリケーション]→[Sample1]→「メインタブ」の「メイン・クラス(M):」欄のクラスが「Sample1」になったままだからでした。なので、「メイン・クラス(M):」欄の右側にある「検索ボタン(S):」を押下して、メイン・クラス名を「Main –(デフォルト・パッケージ)」に修正しコンパイルすると正常に出力できました。 _ _ _ _ _ _ _ _ _ _ <出力結果> ミナトは、5秒眠った。 HPが5ポイント回復した。 ミナトは転んだ! 5のダメージを受けた! ミナトは、25秒眠った。 HPが25ポイント回復した。 ミナトは、逃げ出した! GAME OVER 最終HP125だった! _ _ _ _ _ _ _ _ _ _ 背景として、以前、別件でこのクラスを「Sample1クラス」としてJavaの勉強をしていました。 その後、クラス名を変更し今回のコードを書いていましたが、「メイン・クラス(M):」欄のクラスを「Sample1」から「Main –(デフォルト・パッケージ)」へ変更していなかったため、今回のエラーが発生しておりました。 以上です。ご協力、ありがとうございました。
guest

0

※Java Silver勉強中です。

Sample1クラスはどこに?

あと、分けてコンパイルするんでしたらMain.javaの先頭にHeroクラスをパッケージ化したものをimportすべきではないかと。

投稿2019/03/25 13:40

mike2mike4

総合スコア894

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

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

Beg

2019/03/25 13:58

ご回答ありがとうございます。 今の状況の、ツリー構造を説明しますと、 Sample1(フォルダ)  |_src   |_デフォルト・パッケージ      |_Hero.java      |_Main.java となっています。 エラーでは「Sample1クラスは...」と書かれているのですが、Sample1クラスは無いんですよね。 それで困っています。
mike2mike4

2019/03/25 14:21 編集

eclipseはパッケージ単位でファイルを作るので(あ、eclipseに限ったことではないですね。というか、パッケージの中に複数のクラスをいれます) Sample1パッケージの中にMainクラスを入れた方が間違いがなさそうです。 Sample1をpackge宣言してください。 詳しくは「パッケージエクスプローラ java eclipse クラス」という検索ワードでググってね 私も勉強中なので正解ではないかもしれません というか、改めて見たところ「デフォルト・パッケージ」はパッケージ名のはずです。eclipseの使い方がちょっと変です
jimbe

2019/03/25 15:19

eclipse のパッケージエクスプローラの表示で src の下の「デフォルト・パッケージ」といいますのは, "(デフォルト・パッケージ)"という表記でして, package 宣言の無いクラスファイルが入っています. 推奨されないと警告は出ますが, 使えます.
mike2mike4

2019/03/25 15:30

そうでしたか。jimbeさん、フォローありがとうございます。 試してみましたが、何か入れろと出てきてしまいました。あれ?
jimbe

2019/03/25 15:54

環境で違いが出るのかは分かりませんが, src フォルダ右クリックから, [新規]→[クラス]→[パッケージ]を空状態でクラスを作成, すると"(デフォルト・パッケージ)"に入っています. 実際のファイルは src 直下にあります.
Beg

2019/03/27 14:14

(アドバイスしてくださった皆様へ) お疲れ様です。無事、コンパイルできました。  原因は、[ツールバー]→[実行]→[実行構成]→[Javaアプリケーション]→[Sample1]→「メインタブ」の「メイン・クラス(M):」欄のクラスが「Sample1」になったままだからでした。  なので、「メイン・クラス(M):」欄の右側にある「検索ボタン(S):」を押下して、メイン・クラス名を「Main –(デフォルト・パッケージ)」に修正しコンパイルすると正常に出力できました。 _ _ _ _ _ _ _ _ _ _ <出力結果> ミナトは、5秒眠った。 HPが5ポイント回復した。 ミナトは転んだ! 5のダメージを受けた! ミナトは、25秒眠った。 HPが25ポイント回復した。 ミナトは、逃げ出した! GAME OVER 最終HP125だった! _ _ _ _ _ _ _ _ _ _ 背景として、以前、別件でこのクラスを「Sample1クラス」としてJavaの勉強をしていました。 その後、クラス名を変更し今回のコードを書いていましたが、「メイン・クラス(M):」欄のクラスを「Sample1」から「Main –(デフォルト・パッケージ)」へ変更していなかったため、今回のエラーが発生しておりました。 以上です。ご協力、ありがとうございました。
mike2mike4

2019/03/28 01:50

よかったですね。この質問で助かる人もいると思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問