• ベストアンサー

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というエラーがでてしまいました。 原因がわかる方、教えていただけないでしょうか。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.7

C:\Java\jdk1.5.0\bin\example>..\java Example1 ではどうですか

100flower
質問者

お礼

ありがとうございます。 できました! 「すごい」の一言です。 理由は、今の私にはわかりませんが、これからしらべたいとおもいます。 ありがとうございました。

その他の回答 (8)

回答No.9

まず初めに、以下の過去ログを読んで、javaにおける「Path」と「CLASSPATH」の違いについて理解してください。 http://oshiete1.goo.ne.jp/kotaeru.php3?qid=382238 ただ、ここではWindows XPに関しての設定方法しか載っていないので、「Windows98の場合は?」となるかもしれません。なので、以下のサイトを利用して、もう一度環境変数の設定をし直してください。(もちろん、Windows2000やLinuxの所などは、全く関係ないので読み飛ばしてもらってもいいですよ。) http://www.hellohiro.com/appli.htm 今日は平日ということもあり、僕にできるのはこれぐらいかな~。がんばってねー。

参考URL:
http://oshiete.goo.ne.jp/ask/howto/search.html
100flower
質問者

お礼

参考URLを教えていただきましてありがとうございます。 これからは、JAVAだけでなくいろいろな事も勉強していきたいと思います。

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.8

JAVAコマンドで指定するのは、「ファイル名」ではなく「クラス名」ですよ。 で、クラス名だけでは、ファイルの場所が特定できないため、-cpオプションで場所を指定します。 今回の場合、Example1がデフォルトパッケージである場合は、 >java -cp C:\Java\jdk1.5.0\bin\example Example1 となります。 また、exampleパッケージである場合には、 >java -cp C:\Java\jdk1.5.0\bin example.Example1 となります。

100flower
質問者

お礼

#7の方の方法でも出来ましたが、ngsvxさんの方法でも出来ました。 皆様本当にありがとうございます。 コマンドについても、これから勉強していきたいと思います。 ありがとうございました。

  • yusukey
  • ベストアンサー率56% (17/30)
回答No.6

>バックスラッシュやスラッシュで区切るようには、書いていません。 ですよね。では参考書の通りにやってみましょう・・・。 まずはディレクトリ構成とかも同じようにして試すことをオススメします。

100flower
質問者

お礼

遅い時間まで、やさしく教えてくださいましてありがとうございました。 参考書の通りにやっても上手くいきませんでしたが、こちらで皆様に教えていただいた方法でできました。 なぜだかをこれから考えていきたいと思います。 ありがとうございました。

  • yusukey
  • ベストアンサー率56% (17/30)
回答No.5

>あと、ソースコードもなんだか変です。参考書では public ってのが頭についていませんか? 失礼しました。手元で確認しましたが public なしでも動きました。混乱させてしまったらごめんなさい。

  • yusukey
  • ベストアンサー率56% (17/30)
回答No.4

クラスを指定する際、バックスラッシュやスラッシュで区切るように参考書に書いてありますか?

参考URL:
http://takeoba.cool.ne.jp/java/HelloJava.htm
100flower
質問者

補足

バックスラッシュやスラッシュで区切るようには、書いていません。 参考書は、独習JAVA第3版です。

  • yusukey
  • ベストアンサー率56% (17/30)
回答No.3

http://okweb.jp/kotaeru.php3?q=1609769 によると参考書を購入して勉強されているとのことですので、今一度やっていることと参考書にかいてあることを見比べてみましょう。 いきなり応用するのはむずかしいですからまずは参考書にかいてあることそのままをやってみるのが良いかと。 恐らく >java C:\Java\jdk1.5.0\bin\example\Example で実行するようには書いてありませんよね? あと、ソースコードもなんだか変です。参考書では public ってのが頭についていませんか?

100flower
質問者

補足

ご回答ありがとうございます。 確かに、参考書にはPATHの設定をするように書いていましたが、そちらも上手くいかなかったので、こちらで色々調べて現在の手順になりました。 ソースコードは、何回も見ましたが、参考書に書いてあるとおりです。

  • osumitan
  • ベストアンサー率33% (102/307)
回答No.2

> 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)
回答No.1

多分 C:\Java\jdk1.5.0\bin>java C:\Java\jdk1.5.0\bin\example\Example1 では? クラス名が「Example1」になってますから

100flower
質問者

補足

ご回答ありがとうございます。 C:\Java\jdk1.5.0\bin>java C:\Java\jdk1.5.0\bin\example\Example1 と打ってみましたが、同じエラーがでてしまいました。