- ベストアンサー
Exception in thread
数日前にjavaの勉強をはじめました。 javacによって、classファイルは作成できました。 ファイルの中身は、 class Example1 {public static void main(String args[]) {System.out.println("This is the output from Example1");}}です。 環境変数のPATHはいじらずに、フルパスで作業しています。 classファイルは、C:\Java\jdk1.5.0\bin\exampleの中に保存されています。 java.exeは、C:\Java\jdk1.5.0\binな中にあります。 javaを実行しようとして、C:\Java\jdk1.5.0\bin>java C:\Java\jdk1.5.0\bin\example\Example と入力したところ Exception in thread "main" java.lang.NoClassDefFoundError: C:\Java\jdk1.5.0\bin\example\Exampleというエラーがでてしまいました。 原因がわかる方、教えていただけないでしょうか。 よろしくお願いいたします。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
C:\Java\jdk1.5.0\bin\example>..\java Example1 ではどうですか
その他の回答 (8)
- choconamacream
- ベストアンサー率44% (152/338)
まず初めに、以下の過去ログを読んで、javaにおける「Path」と「CLASSPATH」の違いについて理解してください。 http://oshiete1.goo.ne.jp/kotaeru.php3?qid=382238 ただ、ここではWindows XPに関しての設定方法しか載っていないので、「Windows98の場合は?」となるかもしれません。なので、以下のサイトを利用して、もう一度環境変数の設定をし直してください。(もちろん、Windows2000やLinuxの所などは、全く関係ないので読み飛ばしてもらってもいいですよ。) http://www.hellohiro.com/appli.htm 今日は平日ということもあり、僕にできるのはこれぐらいかな~。がんばってねー。
お礼
参考URLを教えていただきましてありがとうございます。 これからは、JAVAだけでなくいろいろな事も勉強していきたいと思います。
- ngsvx
- ベストアンサー率49% (157/315)
JAVAコマンドで指定するのは、「ファイル名」ではなく「クラス名」ですよ。 で、クラス名だけでは、ファイルの場所が特定できないため、-cpオプションで場所を指定します。 今回の場合、Example1がデフォルトパッケージである場合は、 >java -cp C:\Java\jdk1.5.0\bin\example Example1 となります。 また、exampleパッケージである場合には、 >java -cp C:\Java\jdk1.5.0\bin example.Example1 となります。
お礼
#7の方の方法でも出来ましたが、ngsvxさんの方法でも出来ました。 皆様本当にありがとうございます。 コマンドについても、これから勉強していきたいと思います。 ありがとうございました。
- yusukey
- ベストアンサー率56% (17/30)
>バックスラッシュやスラッシュで区切るようには、書いていません。 ですよね。では参考書の通りにやってみましょう・・・。 まずはディレクトリ構成とかも同じようにして試すことをオススメします。
お礼
遅い時間まで、やさしく教えてくださいましてありがとうございました。 参考書の通りにやっても上手くいきませんでしたが、こちらで皆様に教えていただいた方法でできました。 なぜだかをこれから考えていきたいと思います。 ありがとうございました。
- yusukey
- ベストアンサー率56% (17/30)
>あと、ソースコードもなんだか変です。参考書では public ってのが頭についていませんか? 失礼しました。手元で確認しましたが public なしでも動きました。混乱させてしまったらごめんなさい。
- yusukey
- ベストアンサー率56% (17/30)
クラスを指定する際、バックスラッシュやスラッシュで区切るように参考書に書いてありますか?
補足
バックスラッシュやスラッシュで区切るようには、書いていません。 参考書は、独習JAVA第3版です。
- yusukey
- ベストアンサー率56% (17/30)
http://okweb.jp/kotaeru.php3?q=1609769 によると参考書を購入して勉強されているとのことですので、今一度やっていることと参考書にかいてあることを見比べてみましょう。 いきなり応用するのはむずかしいですからまずは参考書にかいてあることそのままをやってみるのが良いかと。 恐らく >java C:\Java\jdk1.5.0\bin\example\Example で実行するようには書いてありませんよね? あと、ソースコードもなんだか変です。参考書では public ってのが頭についていませんか?
補足
ご回答ありがとうございます。 確かに、参考書にはPATHの設定をするように書いていましたが、そちらも上手くいかなかったので、こちらで色々調べて現在の手順になりました。 ソースコードは、何回も見ましたが、参考書に書いてあるとおりです。
- osumitan
- ベストアンサー率33% (102/307)
> java C:\Java\jdk1.5.0\bin\example\Example のところで、javaコマンドに渡すパラメータは classファイルから拡張子を除いたものではなく、 クラス名なのです。ですから、javaコマンドは 『C:\Java\jdk1.5.0\bin\example\Example』を クラス名と判断して探したところ見つからないので NoClassDefFoundErrorが発生したわけです。 javaコマンドのコマンドラインはこうなります。 > java Example1 javaコマンドは、クラス名からclassファイルを探すとき 環境変数PATHではなく、CLASSPATHを参照します。 CLASSPATHにExample1.classがある場所を追加してください。 (『.』を追加して、カレントディレクトリを参照する というようにしておくと、便利かと思います)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
多分 C:\Java\jdk1.5.0\bin>java C:\Java\jdk1.5.0\bin\example\Example1 では? クラス名が「Example1」になってますから
補足
ご回答ありがとうございます。 C:\Java\jdk1.5.0\bin>java C:\Java\jdk1.5.0\bin\example\Example1 と打ってみましたが、同じエラーがでてしまいました。
お礼
ありがとうございます。 できました! 「すごい」の一言です。 理由は、今の私にはわかりませんが、これからしらべたいとおもいます。 ありがとうございました。