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

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

ただいまの
回答率

90.52%

  • Java

    13836questions

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

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

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 15K+

java_rookie

score 1

前提・実現したいこと

右も左もわからないjava初心者です。お手数ですが用語が間違っている箇所があればそれについてのご訂正をお願いいたします。
環境はwindows10でJDKを用いコマンドプロンプトで動かしています

スッキリわかるjava入門第二版p320より

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

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

  • リスト

該当のソースコード

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();
}
}

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(this.name+"は-5ポイントのダメージ");
}
void run(){
System.out.println(this.name+"は逃げ出した");
System.out.println("GAMEOVER");
System.out.println("最終HPは"+this.hp+"でした");
}
}

試したこと

このコードを実行するために
javac Main.java Hero.java
を入力しコンパイルすることはできました。
ただ java Main
を入力し実行すると
エラー: メイン・クラスMainが見つからなかったかロードできませんでした
のエラーがでてきます

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

カレントディレクトはC¥java1¥Godで
Godフォルダの中にHero.javaとMain.javaが入っております
Hero.classとMain.classもGodフォルダに入っており、クラスフォルダを作らないのではいけないのかと思いそれぞれheroフォルダmainフォルダを作りその中にclassファイルを入れても同じエラーが出てきました。

環境変数は変数名CLASSPATH 変数値C:\java1\God を新規で登録してみたりもしましたが同じエラーでした
環境変数が原因なのかclassファイルが原因なのかわかりません。><
又今回のコードみたいにmainファイルにパッケージで関連づけずに別のファイルから引数を渡すことはできるのでしょうか?

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

クラスパスが原因だとは思いますが・・・

環境変数は変数名CLASSPATH 変数値C:\java1\God を新規で登録してみたりもしましたが同じエラー

CLASSPATHが"C:\java1\God"なら動くと思うのですが・・・そこはよくわかりません。綴りミスだったりする可能性もなきにしもあらずでしょうか。

環境変数を設定するのも一つの方法ではありますがもっと簡単な方法があります。

java -cp . Main

としてみてください。-cpは-classpathの省略形で「クラスパスを指定した場所(この例ではカレントディレクトリー)にしてjavaプログラムを動かしてね」という意味になります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/02 15:28

    早速のご回答ありがとうございます。自分の環境変数の変数値ミスから生じたエラーだとわかりました。
    ただCLASSPATHをC:\java1\Godで登録し動くのを確認できましたが、CLASSPATHを何も設定しなくても正常に動作をすることが確認できました。CLASSPATHはどういうときに設定、変更するべきなのでしょうか?もう一つ追加の質問で申し訳ありませんが、よろしければお願い致します

    キャンセル

  • 2017/04/02 15:39

    運用によって考え方は色々ありそうですね。例えば自分で多数のJavaアプリケーションを作っておりそのクラスをどこかのディレクトリーにおいてあるという状況では「一々コマンドラインでクラスパスを指定するのが面倒」といった理由や「複数のバージョンを別のディレクトリーに置いてあるのでそれを環境変数で切り替えたい」という理由で環境変数を使いたいこともあるかも知れません。一方で「いまコンパイルしたプログラムを環境設定に左右されずに明示的に指定したい」といった場合は自分の回答のように-cpを使った方が確実でしょうね。

    キャンセル

  • 2017/04/04 21:38

    返事が遅れてしまい申し訳ございませんでした。方法は一つではなく色々方法があり柔軟な対処ができることがわかり勉強になりました、丁寧に最後までありがとうございました

    キャンセル

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

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Java

    13836questions

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