- 締切済み
Javaで新しいファイルだけがエラーになります
解答をお願いします。 Javaでプログラミングの練習をしているのですが、 本日Javaで新しいファイルを作成して実行しても 「エラー: メイン・クラス○○○が見つからなかったかロードできませんでした」 と表示されて実行できません。 以前作成したファイルは実行できるのですが、たとえまったく同じソースでも、今日作成したファイルのみエラーになってしまします。 解決方法を教えて頂けないでしょうか。 その他の状況は以下の通りです。 ・Pathの変換は行っています。(ClassPathもです) ・ファイルは『(class名).java』となっています。 ・すべてのファイルは同じファイルに保存しています。 ・ファイルは複数制作し、いずれもエラーです。 ・テキストエディタも複数使用してみましたが、結果は同じでした。 どうかよろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- wormhole
- ベストアンサー率28% (1626/5665)
>ご指摘の通り、問題のファイルのソースとコマンドをコピー&ペーストしてみます。 「実行できない」といわれてる方と「一方で先日作成したファイルは普通に実行出来ます」といわれてる方、コンパイルまでの手順(コンパイルしているソースも同じ)が全く同じで実行するクラス名だけ異なるようにしか見えないんですが。 class myjava3の定義はmyjava3.javaにしてるんではないんですか?
- jjon-com
- ベストアンサー率61% (1599/2592)
> プロンプトでの実行は以下のようです。 > c:\MyJava>javac myjava.java > > 一方で先日作成したファイルは普通に実行出来ます > c:\MyJava>javac myjava.java 本日作成したファイルが C:\MyJava フォルダの myjava.java ファイルであり, 先日作成したファイルも C:\MyJava フォルダの myjava.java ファイルだなんてありえないです。 同一フォルダの同一ファイル名で2つの異なる内容の保存はできません。 プロンプトで次のようにTYPEコマンドを入力してください。 C:\MyJava> type myjava.java 表示されるファイル内容は,先日作成したという「class myjava {」で始まるソースコードのはずですよ。 「class myjava3 {」で始まるファイル内容は,別のフォルダあるいは別のファイル名で保存されているのでしょう。
- jjon-com
- ベストアンサー率61% (1599/2592)
匿名が許されているQ&Aサイトなのだから,具体的にどんなファイル内容で,具体的にどんなコマンドを入力して,具体的にどんなエラーメッセージが出たのか,そのままCopy&Pasteで提示してしまう方が話が早いのに。 質問者が「Javaでプログラミングの練習をしている」という初心者であるだけに「その他の状況は以下の通りです」と言われてもそれを鵜呑みにはできないです。 とりあえず,思いついたことを一点。 次のコードを q8055224.java というファイル名で保存して, ---------------------------------------- class Q8055224 { public static void main(String[] args) { System.out.println("11309646Ks"); } } ---------------------------------------- javac q8055224.java とコマンド入力して翻訳(コンパイル)し, java q8055224 とコマンド入力して実行すると次のエラーになります。 Exception in thread "main" java.lang.NoClassDefFoundError: q8055224 (wrong name: Q8055224) その理由は,Javaコンパイルによって生成される .classファイル名は,.javaのファイル名で決まるのではなく,class名で決まるから。 つまり生成されるバイトコードは,(小文字のq)8055224.class ではなく (大文字のQ)8055224.class というファイル名になる。 よって java Q8055224 で実行するのが正しい。(エラーメッセージ中に wrong name だとちゃんと指摘があります)
- wormhole
- ベストアンサー率28% (1626/5665)
>すみません、質問の方法が良くなかったみたいですね。 >classファイルが作成できない状態です。 #1の方が何をたずねているのかわかってますか? classファイルをつくるのにどのようにして作成していますか? 実行時にはどのように実行していますか?
補足
申し訳ありません。 質問の意図が理解できていなかったようです。 ソースをコマンドプロンプトで以下のように実行し作成しています。 >cd c:\myjava >javac myjava.java >java (クラス名) このように実行すると、勝手にフォルダ内のiavaファイルの上にclassファイルが作成されていました。 今回も同じ手順で行いましたが、classファイルは作成されずエラーになります。 この返答で正しいでしょうか?
- kmee
- ベストアンサー率55% (1857/3366)
まずは落ち着いて、状況を整理してください。 新しいだの古いだの言われてもなんのことだかわかりません。 具体的に、どのように実行しようとしたのですか? 順序よくまとめてみましょう ・ファイルは『(class名).java』となっています コンパイルして、(class名).classファイルは作成できたのですか?
補足
返答ありがとうございます。 すみません、質問の方法が良くなかったみたいですね。 classファイルが作成できない状態です。 classpathの問題でしょうか?
補足
返答ありがとうございます。 見たところ、class名とフォルダ名は同じであると思います。 ご指摘の通り、問題のファイルのソースとコマンドをコピー&ペーストしてみます。 ソースは以下のようです。 class myjava3 { public static void main(String arg[]) { int number; number = 2 + 1; System.out.println( + number); } } プロンプトでの実行は以下のようです。 C:\Users\owner>cd c:\myjava c:\MyJava>javac myjava.java c:\MyJava>java myjava3 エラー: メイン・クラスmyjava3が見つからなかったかロードできませんでした 一方で先日作成したファイルは普通に実行出来ます C:\Users\owner>cd c:\myjava c:\MyJava>javac myjava.java c:\MyJava>java myjava こんにちは いかがでしょうか?