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

このQ&Aのポイント
  • java初歩の初歩 HelloWorld実行エラーの解決策について教えてください。
  • WinXP Java2SDK1.4.1を使用してHelloWorld.javaを実行するとエラーが出ます。
  • リカバリ後再インストールした後でも同じ設定をしてもエラーが出てしまいます。
回答を見る
  • ベストアンサー

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

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

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

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

じゃあ、CLASSPATH 環境変数は削除してしまいましょう。どっかのプログラムが勝手に CLASSPATH を設定しているみたいですが、その設定が却って邪魔になっています。(でも一応削除する前の控えは取っておいてください) あと、これはユーザーアカウントがらみの話でもありますが、Windows XP の環境変数の設定には全ユーザー共通の環境変数と自分だけの環境変数があります。CLASSPATH が設定されていないか両方とも確認してみてください。

keipy
質問者

お礼

再度のご回答ありがとうございます。 CLASSPATHを削除したら実行できました! 聞いたところ、家族は環境変数のところをまったくいじっていませんでした。 というより、知りませんでした(笑) そうすると、なにかアプリケーションをインストールしたときに変わってしまったんでしょうか。 万が一、今後同じようなことがありましたらこちらの方法、試してみます。

その他の回答 (6)

回答No.7

質問に対する回答ではありませんが…。 クラスパス関係は理解すべき基本的なことではありますが、そんなに時間をとるべき所でもないと思います。 エクリプスとか使えばそういうわずらわしい問題からは開放されますよ。無料だし便利です。今Javaの開発ではもっとも多く使用されているエディタです。 それか、コンパイル用と実行用のバッチファイルを書いて、クリックで実行できるようにするのも手です。 コマンドや、ファイルのパスをすべて絶対パスで書いていればまず問題はおきないと思います。

参考URL:
http://eclipsewiki.net/eclipse/
  • yamada46
  • ベストアンサー率39% (13/33)
回答No.6

以下、ご参考まで。私の理解が間違ってたら、どなたかフォローお願いします。 .はカレントディレクトリ(現在のディレクトリ)を指します。javacを実行してjava HelloJavaを実行しようとしている場所の事です。わかりやすく言うと、HelloJava.classのあるディレクトリの事です。CLASSPATHに.を指定しておくと、カレントディレクトリを探しに行くので、HelloJava.classを実行する事が出来るわけです。 環境変数にCLASSPATHが無い場合は良いのですが、CLASSPATHに何かが指定してあって、且つ、.が指定していない場合は、カレントディレクトリを探しに行ってくれないので、java.lang.NoClassDefFondErrorが発生します。なので、現在設定されているCLASSPATHに.を加えれば良いわけです。実際には、 .;"C:\Program Files\pcdNavi\bin\pcdnavi.zip";"C:\Program Files\QuickTime\QTSystem\QTJava.zip" のようになります。 何かのアプリケーションがCLASSPATHを設定したようですが、CLASSPATHを削除してしまうと、そのアプリケーションが正常に動作しなくなるかもしれません。それが問題になるようであれば、Javaプログラムの実行時に、 >java -cp . HelloJava のようにCLASSPATHに.を指定するという方法もあります。

  • W07A09
  • ベストアンサー率66% (4/6)
回答No.4

色々試されたみたいですが、結果今は CLASSPATHなどの設定は、どうなっている状態ですか?

keipy
質問者

補足

CLASSPATHは C:\Program Files\pcdNavi\bin\pcdnavi.zip;C:\Program Files\QuickTime\QTSystem\QTJava.zip と、デフォルトに戻した状態です。 変更する前にコピペして控えておきました。 CLASSPATHは「.」入力を試したほかは、なにもしておりません。 PATHは ;C:\j2sdk1.4.1_07\bin と、最後に付け足した状態です。 プログラミングソフトも、以前と同じサイトから同じものをダウンロードして、同じディレクトリに保存しました。 家族でPCを共有しておりますので、ユーザーアカウントを設定してますが、 何か関係ありますでしょうか?

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

> public static void main(String[] args) { > public static void main(String args[]) { これはどっちでもいい。私は前者を推奨しますが。 で、CLASSPATH は設定するなとあれほど強く言ったのに……。まあいいや。 前回の回答でも言ったんですが、まだ分かってないみたいなのでもう一度。 私は前回の回答で以下のように書きました。 ------------------------------ コンパイルするときは javac HelloWorld.java というように、ソースファイルの名前を拡張子付きで指定しますが、プログラムを実行するときは java Print というように、クラスの名前を指定します。ソースファイルの名前ではありません ------------------------------ 質問文にあるプログラムでは、ソースファイルの名前は HelloWorld.java ですが、クラスの名前は HelloWorld じゃなくてHelloJava になっていますよね。 よって、コンパイルする際のコマンドは javac HelloWorld.java ですが、実行する際のコマンドは java HelloWorld じゃなくて java HelloJava です。

keipy
質問者

お礼

ご回答ありがとうございます。 まずは訂正を。 以前のアドバイスの中で、ファイル名・クラス名は統一するのが習慣とのことでしたので、 共に「HelloJava」にしてみました。 二つのファイルが同じディレクトリに、同じ名前で置かれているのを確認しています。 前の文の一部を引用したもので。失礼いたしました。 おっしゃるとおり、コンパイル時はソースファイルの拡張子付を指定、実行時はクラス名のみを指定しました。 CLASSPATHは初心者がいじるところではないということでしたが、 私の場合、CLASSPATHがそのままでは何度やっても同じ結果でしたので、 ほかに教えていただいた「.」の入力を試したところ、実行が成功しました。 今回は「.」の入力のあと、またCLASSPATHをデフォルトに戻して試してみましたが同じで・・・ スペルミスなども確認したのですが。

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.2

classファイルの位置と作業ディレクトリは同じですか?

keipy
質問者

お礼

ご回答ありがとうございます。 作業ディレクトリ、同じです。

  • DINO-PIE
  • ベストアンサー率4% (1/21)
回答No.1

public static void main(String args[]) では? []の位置はどっちでもいいのでしょうか?

keipy
質問者

お礼

ご回答ありがとうございます。 リカバリ前に実行できたときのソースと、その部分は変わっていません。 DINO-PIEさんのように書き換えて、コンパイルからやり直してみましたが、やはり実行できませんでした。

関連するQ&A

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

    • ベストアンサー
    • Java
  • コマンドプロンプトから実行した時にエラーが出る

    Javaでバイトコードを実行しようとしたら、こんな文が出ました。 Exception in thread "main" java.lang.NoClassDefFoundError: Test01 実行できないのでWEBで調べてみたところ、以下のような回答がありました。 以下引用文>> Exception in thread "main"java.lang.NoClassDefFoundError:HelloWorld というエラーが出て動きません。 [S002-A08] 実行時エラーがでていることから、javaインタープリターは動いています。 HelloWorld という名前のクラスがみつからないというエラーです。 JDK1.2 以降の Java をお使いの場合、、 プロンプト> java -classpath . HelloWorld でどうでしょう? これでうまくいくならば CLASSPATH環境変数の 設定に . (ドット、ピリオド)がないのが原因です。 CLASSPATH環境変数は、間違い易いことが多い機能ですので完全に理解するまでは使わず、 -classpath 実行時オプションでクラスパス(java VM がクラスファイルを探すパス)を 教えてあげることをお勧めします。 doskey とうてば、Windows95/98 の MS-DOSプロンプトでのコマンド入力も苦にならないでしょう。 >> 以前はこんなことせずともコンパイル、実行できたんですが、何が変わってしまったのでしょうか。PATHの設定は正しく設定しているつもりなのですが… 個人的には毎回実行パラメーターに"-classpath . "と打ち込むのは面倒なので、打ち込まないでも実行できる方法が知りたいと思います。 ちなみにJDKのバージョンは1.3.1_01 OSはWindows2000です。

    • ベストアンサー
    • Java
  • Java2Dの実行エラー(2)

    作成したJavaのソースをjavacでコンパイルを通し、 そのあとにjavaコマンドで実行を通したところ、 以下のようなエラーメッセージが出力され実行できませんでした。 (作成したクラスファイルは「EdgeDetection.class」です。) ------------------------------------------------- C:\TEMP>java -cp . EdgeDetection Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException at EdgeDetection.main(EdgeDetection.java:31) ------------------------------------------------- このエラーを解消するためにもクラスパスの設定(-classpathオプション)もしましたが、駄目でした。 この現象を解決するには、どのようにしたらよろしいのでしょうか?

    • ベストアンサー
    • 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です。初心者ですが、どうかよろしくお願いします。

  • 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
  • CLASSPATHを設定→エラー!!??

    Main.java Sub.java を作りました。 デフォルトの状態(CLASSPATHに何も設定していない状態)で javac Main.java とすると問題なくコンパイルできるのですが・・・しかし、   export CLASSPATH=.:~/myclasses などのように、CLASSPATH を設定すると、「シンボルを解釈処理出来ません」というコンパイルエラーが出ます。 なぜでしょうか? CLASSPATH に カレントディレクトリを設定したにもかかわらず、Main.java Sub.javaがあるディレクトリでコンパイルしてもエラーが出ます。 ちなみに、   export CLASSPATH= のように、CLASSPATHを空にすると、またコンパイルが通るようになります。

    • ベストアンサー
    • Java
  • HelloWorldのソースがコンパイルできません

    Javaを初めて2日目の初心者です。 JDKをDLし、環境変数を追加し、コマンドプロンプトにてjavcコマンドを実行したところ、エラーメッセージ等は出ませんでした。 そこでHelloWorldのソースを作り、コンパイル(javac)しようとしたろころ、以下のようなエラーメッセージが出てしまい、先に進めません。 エラー:HelloWorld.javaが読み込めません エラー 1個 さまざまなHPを参照し、ソースや環境変数を変えてみても同じメッセージが出てしまいます。 ちなみに、OS等は以下の通りです。 ・OS:Windows XP Pro SP2 ・JAVA:JDK1.5.0_06 ・システムのユーザー環境変数 JAVA_HOME C:\Program Files\Java\jdk1.5.0_06 PATH C:\Program Files\Java\jdk1.5.0_06\bin CLASSPATH C:\Program Files\Java\jdk1.5.0_06\lib\tools.jar ・システム環境変数 CLASSPATH  C:\Program Files\Java\jre1.5.0\lib\ext\QTJava.zip QTJAVA  C:\Program Files\Java\jre1.5.0\lib\ext\QTJava.zip ・作業用フォルダはCドライブ直下 ・ソースファイルはメモ帳およびワードパッドで試しました。 ・ソースは以下の通りです public class HelloWorld { public static void main(String args[]) { System.out.println("Hello Java World !"); } } 以上です。 よろしくお願いします

    • ベストアンサー
    • Java
  • JAVAの開発、実行環境について

    最近JAVAの勉強をスタートした者です。 環境はWinXPSP3 SUN Microsystems から最新版のJDKをDLし、環境変数も設定、定番の初歩『HelloWorld』表示に着手しました。 public class helloworld { public static void main(String args[]) { System.out.println("Hello Java World !"); } } javac helloworld.java でコンパイル java helloworld で実行 java.lang.UnsupportedClassVersionError というエラーがきました。 調べたところ、開発環境と実行環境のバージョンの違いが原因とのこと。 javac 1.6.0_06 java version "1.4.2_03" となっていました。 さて、このjava versionがどうやっても更新できません。 JREの最新版をDLしても変わらず。 コントロールパネルのJAVA(TM)コントロールでは、JAVAアプリケーションランタイムの設定は、1.0.6_06としっかり最新版になっています。 コマンドで表示すると1.4、コンパネからだと1.6、これはどうして異なるのでしょうか?というかむしろ別のもの? またどのように設定したら、問題が解決されるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • CLASSPATHに二つのディレクトリ設定するとエラーが出る?

    # 2342062 ではお世話になりました。もう少し質問を明確にします。よろしくお願いします!! CLASSPATHを二つのディレクトリを設定するとエラーが出てしまいます。 理由が分からないので、お願いします! 【状況】 同じディレクトリに 次の2つのファイルがあります。 --- Main.java --- public class Main { public static void main(String[] args) { Sub x = new Sub(); x.test(); } } --- Sub.java --- public class Sub { public void test() { System.out.println("Sub !"); } } 【再現手順】 (1) デフォルトの CLASSPATH は空です。この状態でコンパイルしても問題ありません。 $ echo $CLASSPATH $ javac Main.java $ java Main Sub ! (2) CLASSPATH に . を設定します。この状態でコンパイルしてもやはり問題ありません。 (3) ところが、CLASSPATH にカレントディレクトリ「 . 」ともう一つのディレクトリ(何もファイルがありません)を設定してコンパイルすると、次のようにエラーが出てしまいます。 $ export CLASSPATH=.:tmp $ javac Main.java Main.java:3: シンボルを見つけられません。 シンボル: クラス Sub 場所 : Main の クラス Sub x = new Sub(); ^ ---------------- とりあえず、カレントディレクトリはCLASSPATHに指定してあるので、Sub.classは見つかるはずだと思うのですが、なぜエラーが出るのでしょうか? よろしくお願いします!!

  • CLASSPATHに二つのディレクトリ設定するとエラーが出る?

    CLASSPATHを二つのディレクトリを設定するとエラーが出てしまいます。 理由が分からないので、お願いします! 【状況】 同じディレクトリに 次の2つのファイルがあります。 --- Main.java --- public class Main {  public static void main(String[] args) {   Sub x = new Sub();  x.test();  } } --- Sub.java --- public class Sub {  public void test() {   System.out.println("Sub !");  } } 【再現手順】 (1) デフォルトの CLASSPATH は空です。この状態でコンパイルしても問題ありません。 $ echo $CLASSPATH $ javac Main.java $ java Main Sub ! (2) CLASSPATH に . を設定します。この状態でコンパイルしてもやはり問題ありません。 (3) ところが、CLASSPATH にカレントディレクトリ「 . 」ともう一つのディレクトリ(何もファイルがありません)を設定してコンパイルすると、次のようにエラーが出てしまいます。 $ export CLASSPATH=.:tmp $ javac Main.java Main.java:3: シンボルを見つけられません。 シンボル: クラス Sub 場所 : Main の クラス Sub x = new Sub(); ^ ---------------- とりあえず、カレントディレクトリはCLASSPATHに指定してあるので、Sub.classは見つかるはずだと思うのですが、なぜエラーが出るのでしょうか? よろしくお願いします!!

専門家に質問してみよう