• ベストアンサー

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!"); } }

  • keipy
  • お礼率66% (10/15)
  • Java
  • 回答数5
  • ありがとう数4

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

  • ベストアンサー
  • 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)を勉強されるとわかります。

関連するQ&A

  • java初歩の初歩 HelloWorld実行エラー

    Exception in thread main"java.lang.NoClassDefFondError: HelloWorld とエラーが出ます。 実は先日同じ内容で、こちらで解決していただきました。 そのときの解決策は、通常のPATHの設定に加え、CLASSPATHに.(ドット)と入力するというものでした。 ですが、その後リカバリをかけたところ、同じ設定をしてもエラーが出てしまいます。 javacは出来ています。 解決策がありましたら教えてください。 ファイル名:HelloWorld.java 環境(?):WinXP Java2SDK1.4.1使用(リカバリ後再インストール) 環境変数の設定:PATH→;C:\j2sdk1.4.1_07\binと入力 プログラム内容: class HelloJava{ public static void main(String[] args) { System.out.println("Hello World!"); } }

    • ベストアンサー
    • Java
  • javaの実行環境

    javaの勉強をしようと思い、以下のhelloworldコードを書いてみました。 public class HelloWorld { public static void main(String[] args) { System.out.print("Hello World\n"); } } それを、以下のようにlinux環境(ubuntu 10.10)でコンパイル実行しようとしたのですが、 javac HelloWorld.java java HelloWorld.class Exception in thread "main" java.lang.NoClassDefFoundError: ・・・ と怒られてしまいました。そこで色々調べて jar cvmf manifest.mf test HelloWorld.class とjarファイルを作成して実行したところ、適切に"Hello World"が表示されました。 (manifest.mfの中身は"Main-Class: HelloWorld"1行だけです。) その後、このjarファイルをwindows環境に持っていって実行したのですが、 Exception in thread "main" java.lang.NoClassDefFoundError: ・・・ と怒られてしまいました。 linux環境で、"echo $CLASSPATH"を実行しても何も表示されず、CLASSPATHはどこにも通っていないようです。 また、windows環境のDOS画面にてSETを実行し、環境変数を表示させてもCLASSPATHはありませんでした。(javaはインストール済みです。) で、質問です。 1)なぜjarにすると実行でき、classファイルのままでは実行出来なかったのでしょうか? 2)windows環境で、CLASSPATHを設定したほうが良いのでしょうか?設定する場合は、prgramfiles\java\binで良いのでしょうか? 以上、長くなり申し訳ないのですが、よろしくお願いします。

    • ベストアンサー
    • Java
  • Java何故エラーになるのですか?

    public class Sample3_1 { public static void notMain(String[] args) { System.out.println("not main"); } public static void main (String[] args) { System.out.println("こんにちは、Java"); System.out.println("私の名前は、コウゾウです。"); } } Exception in thread "main" java.lang.Error: Unresolved compilation problems: トークン "Invalid Character" に構文エラーがあります。このトークンを削除してください 構文エラーがあります。"}" を挿入して ClassBody を完了してください at Sample3_1.main(Sample3_1.java:10) "}" を挿入して」と書かれてますが、 "}" には間違いなさそうです。 どなたか解説のほどを宜しくお願い致します。

    • ベストアンサー
    • Java
  • エラーなのですが…

    Javaコンパイルが成功して、クラスファイルは出来たのですがプロンプト画面上に Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld/java と、表示されます。 原文は public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } です。なぜ例外が投げられるのでしょうか?すいませんが回答おねがいいたします。

    • ベストアンサー
    • Java
  • JAVA実行時エラーについて教えてください

    JAVAを最近になって始めた初心者です。 コンパイルは問題なく終了するのですが、実行時に Exception in thread "main" java.lang.NoClassDefFoundError:HelloWorld(Unsupported major.minor version 49.0)    at java.lang.ClassLoader.defineClass0(Native Method)    at java.lang.ClassLoader.defineClass(Unknown Source) と表示されます。実際には at java.~ 以降にも複数行文字が表示されています。(全部で12行です) ソースファイル及びクラスファイルの格納先は c:\java\HelloWorld.java c:\java\HelloWorld.class ソースは以下の様に記述しました。 class HelloWorld { public static void main(String args[]) { System.out.println("HelloWorld"); } } 1)過去ログから“環境設定のクラスパス”及びコマンドプロンプトで “java -cp. HelloWorld”を確認しました。そうすると以下のようなメッセージが表示されます。 Unrecognized option: -cp. Could not create the Java virtual machine. 2)システム環境変数の“PATH”は以下のように記述しております。 ;C:\Program Files\Java\jdk1.5.0_07\bin 3)システム環境変数の“CLASSPATH”は指定しておりません。というより、指定しても現象は変わりませんでした。 ご教授願えないでしょうか。宜しくお願い致します。

    • ベストアンサー
    • Java
  • コンパイルはうまくいったのですが…

    > 全くの初心者です。お手数ですが、よろしくお願いします。 > > 実行時に下記エラーが表示されます。 > Exception in thread "main"java.lang.NoClassDefFoundError:test > > ・OS:windows XP > ・JAVA 2 SDK 「1.4.2_06」 > ・javaファイル「test.java」(C:\ja) > ・環境変数 > "Path" > 「%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\j2sdk1.4.2_06\bin」 > > ※実行がうまくいかなかったので、「CLASSPATH」を新規に設定して > みました。正直自信がありません。 > 「.;C:\ja\test;%CLASSPATH%」 > > 以上なのですが、どこがいけないかおわかりになりますでしょうか?よろしくお願いします。

    • ベストアンサー
    • Java
  • Javaでコンパイルできなくなりました

    javaでコンパイルできなくなりました。今まではJava2 SDK バージョン1.4.2_03をインストールしてコマンドプロンプトからjavac、javaコマンドを用いコンパイル、実行していました。 そして、Eclipse(バーション3.0)というIDE環境に興味を持ちインストールした後にとりあえずもう一度コマンドプロンプトからjavacコンパイルしてみたらエラーがでるようになりました。 ソースを書くと長くなってしまうので簡単に説明すると、String sに"Hello World"を代入してSystem.out.println()で表示させるだけのプログラムです。Eclipseをインストールする前は実行できたのでソースに問題があるという事はありません。エラーメッセージは以下のような感じでした //エラーメッセージ 検出値 : java.lang.String 期待値 : String String s = "Hello World"; その後にソースで String s="Hello World";としていた行を java.lang.String s = "Hello World";に変更しました するとjavacではエラーが出なくなるのですがjavaコマンドで実行すると Exception in thread "main" java.lang.NoSuchMethodError: main というメッセージが出て実行できないです。 環境変数は、SDKインストール後、PATHC:\j2sdk1.4.2_03\bin;を加え、Eclipseインストール後は何も変更していません。 何が問題なのでしょうか?お願いします。

    • ベストアンサー
    • Java
  • javaが出来ません

    簡単な質問で申し訳ないのですが、 j2sdk1.4.1をインストールして "HelloWorld"とDOSで表示しようとしたのですが javac HelloWorld.java までは出来てclassもあるのですが java HelloWordを実行しようとしのですが、 Exception in thread "main" java,lang.NoClassDefFoundError:HelloWorld と表示されます。 どうしたらいいのでしょうか? お願いします。

    • ベストアンサー
    • Java
  • コンパイル時のエラー。

    いつも大変お世話になりありがとうございます。 初心者向けのJAVAの件。 コンパイルが下記の通りになりました。 どこが間違っているのでしょうか? アドバイスのほど、宜しくお願い申し上げます。 C:\JAVA>javac Lesson09.java C:\JAVA>java Lesson09 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at Lesson09.main(Lesson09.java:4) コード public class Lesson09 { public static void main(String[] args) { int x, y; x = Integer.parseInt(args[0]); y = Integer.parseInt(args[1]); java.awt.Point point = new java.awt.Point(); point.setLocation(x, y); System.out.println("X, Y座標をフィールドで参照します(int)"); System.out.println("X 座標:" + point.x); System.out.println("Y 座標:" + point.y); System.out.println("X, Y座標getメソッドで参照します(double)"); System.out.println("X 座標:" + point.getX()); System.out.println("Y 座標:" + point.getY()); } }

    • ベストアンサー
    • Java
  • Exception in thread "main" java.lang.NoClassDefFoundError: helloworldで困っています

    Exception in thread "main" java.lang.NoClassDefFoundError: helloworldと出てJAVAが実行できません。どうしたらよいのでしょうか。以前もこういう質問をしたのですが、またなってしまいました。 CLASSPATHの設定とかもしてみようといろいろと試行錯誤したのですが、だめでした。どういう設定にすればよいかもわかりません。 どうにかして、 java HelloWorld で実行できるようになりませんか? JAVAのSDKをインストールした場所は C:\j2sdk1.4.0 です。コンパイルはできます。 OSはWindowsXPです。初心者ですが、どうかよろしくお願いします。