• ベストアンサー

java初歩の初歩 コンパイルエラー

これからjavaを学ぶ初心者です。 本やネットを参考にjavacはできましたが、実行がでません。 Exception in main"java.lang.NoClassDefFondError: HelloWorld とエラーが出ます。 この手の質問は多いようですが、自分がどの解決策に当てはまるのか分かりません。 教えてください。 ファイル名:HelloWorld.java 環境(?):WinXP Java2SDK1.4.1使用 環境変数の設定:PATH・ClassPATHともに→末尾に;C:\j2sdk1.4.1_07\binと入力 プログラム内容: class Print{ public static void main(String[] args) { System.out.println("Hello World!"); } }

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

  • ベストアンサー
  • gorogo
  • ベストアンサー率100% (1/1)
回答No.1

試しに、 CLASSPATHを.としてみてください。

keipy
質問者

お礼

遅くなりましたが、ご回答ありがとうございました。 No.5の方まで全て拝見したところ、 CLASSPATHは私のような初心者は触らないほうが良い印象を受けましたので、 失礼ながらこちらの方法は最後に試させていただきました。 すると、なんと解決! 初めてのコンパイルを体験することができました。 PCの相性のようなものなのでしょうか。 とにかく良かったです。

その他の回答 (4)

回答No.5

最近は、この種の質問が多発していますね。後期の授業が、本格的に始まったこととも関係しているんでしょうか?それはさておきさておき…。 一応、ここの回答欄にて、まとめて、自分の思ったことを述べておきます。(強いてあげれば、中級者向け、といったところでしょうか。) まず初めに、お勧め過去ログです。 PathとCLASSPATHの違いについて→ http://oshiete1.goo.ne.jp/kotaeru.php3?qid=382238 ショートネーム→ http://oshiete1.goo.ne.jp/kotaeru.php3?qid=1463228 あと、JAVA2SDKインストール時における、CLASSPATH設定の必要性に関しては、僕も#4さんと同じ見解です。確かに、最初はhellohiroのサイトも、ものすごく詳細に分かりやすく説明されていて、非常にいいサイトだなと思ったのですが、初心者の方々には、かえって詳しすぎる内容なのかもしれませんね。それに、#2さんの言う通り、import文とディレクトリ構成の関係などについての理解がないと、やはり難しい内容かと。(それまでは、棚上げ状態にしておいても、全然構いません。) ただ、個人的には、以下の2点において、CLASSPATHには非常に苦しめられましたけどね。 ・Tomcatにて、Servletのjavac実行時 ・JSPからのBean呼出し時

keipy
質問者

お礼

遅くなりましたが、ご回答ありがとうございます。 難易度や実体験も含めたご回答、参考になりました。 手順だけでなく、Path CLASSPATHについてなどの言葉の意味も理解していこうと思います。

  • UKY
  • ベストアンサー率50% (604/1207)
回答No.4

> 環境変数の設定:PATH・ClassPATHともに→末尾に;C:\j2sdk1.4.1_07\binと入力 CLASSPATH 環境変数にも ;C:\j2sdk1.4.1_07\bin を追加したのですか? それは完全に間違っています。 CLASSPATH 環境変数は削除してください。 初心者は絶対に CLASSPATH 環境変数を設定してはいけません!! (このサイトでも私が何度も口をすっぱくして言っているのですが、いまだに環境変数に関して間違った古い情報が流布しているので困ったものです。本や入門サイトも平気で間違ったことを書いていたりします) 一方、コンパイルはできたということなので PATH 環境変数は大丈夫でしょう。 で、コンパイルするときは javac HelloWorld.java というように、ソースファイルの名前を拡張子付きで指定しますが、プログラムを実行するときは java Print というように、クラスの名前を指定します。ソースファイルの名前ではありませんし、クラスファイルの名前でもありませんので、.java とか .class などの拡張子はつけません。 なお、今回の質問では HelloWorld.java ファイルの中に Print クラスのコードが書かれていますが、一般的には、Print.java ファイルの中に Print クラスのコードを書くというように、ソースファイル名とクラス名を一致させる習慣になっているので、覚えておいてください。

keipy
質問者

お礼

遅くなりましたが、ご回答ありがとうございます。 恥ずかしながらずっと、java HelloWorldでやっていました。 プログラミングの内容をまったく理解してなかったですね・・・

  • kztk
  • ベストアンサー率53% (59/110)
回答No.3

クラス名をPrintにしたいならば、public class Printとして、ファイル名もPrint.javaとしなければならないと思います。

keipy
質問者

お礼

遅くなりましたが、ご回答ありがとうございます。 プログラミングの内容とファイル名を意識しないといけないですね。 正直本のプログラミングをそのまま打ち込んでたところがありましたので、今後気をつけます。

回答No.2

CLASSPATHにはHelloWorld.classを置いたフォルダを足してください。(ただしプログラムにpackage xxx という文が無い場合) このあたりは参考書のパッケージ管理(package, import)を勉強されるとわかります。