- ベストアンサー
java初歩の初歩 HelloWorld実行エラー
- java初歩の初歩 HelloWorld実行エラーの解決策について教えてください。
- WinXP Java2SDK1.4.1を使用してHelloWorld.javaを実行するとエラーが出ます。
- リカバリ後再インストールした後でも同じ設定をしてもエラーが出てしまいます。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
じゃあ、CLASSPATH 環境変数は削除してしまいましょう。どっかのプログラムが勝手に CLASSPATH を設定しているみたいですが、その設定が却って邪魔になっています。(でも一応削除する前の控えは取っておいてください) あと、これはユーザーアカウントがらみの話でもありますが、Windows XP の環境変数の設定には全ユーザー共通の環境変数と自分だけの環境変数があります。CLASSPATH が設定されていないか両方とも確認してみてください。
その他の回答 (6)
- arakororin
- ベストアンサー率39% (80/205)
質問に対する回答ではありませんが…。 クラスパス関係は理解すべき基本的なことではありますが、そんなに時間をとるべき所でもないと思います。 エクリプスとか使えばそういうわずらわしい問題からは開放されますよ。無料だし便利です。今Javaの開発ではもっとも多く使用されているエディタです。 それか、コンパイル用と実行用のバッチファイルを書いて、クリックで実行できるようにするのも手です。 コマンドや、ファイルのパスをすべて絶対パスで書いていればまず問題はおきないと思います。
- yamada46
- ベストアンサー率39% (13/33)
以下、ご参考まで。私の理解が間違ってたら、どなたかフォローお願いします。 .はカレントディレクトリ(現在のディレクトリ)を指します。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)
色々試されたみたいですが、結果今は CLASSPATHなどの設定は、どうなっている状態ですか?
補足
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)
> 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 です。
お礼
ご回答ありがとうございます。 まずは訂正を。 以前のアドバイスの中で、ファイル名・クラス名は統一するのが習慣とのことでしたので、 共に「HelloJava」にしてみました。 二つのファイルが同じディレクトリに、同じ名前で置かれているのを確認しています。 前の文の一部を引用したもので。失礼いたしました。 おっしゃるとおり、コンパイル時はソースファイルの拡張子付を指定、実行時はクラス名のみを指定しました。 CLASSPATHは初心者がいじるところではないということでしたが、 私の場合、CLASSPATHがそのままでは何度やっても同じ結果でしたので、 ほかに教えていただいた「.」の入力を試したところ、実行が成功しました。 今回は「.」の入力のあと、またCLASSPATHをデフォルトに戻して試してみましたが同じで・・・ スペルミスなども確認したのですが。
- Bonjin
- ベストアンサー率43% (418/971)
classファイルの位置と作業ディレクトリは同じですか?
お礼
ご回答ありがとうございます。 作業ディレクトリ、同じです。
- DINO-PIE
- ベストアンサー率4% (1/21)
public static void main(String args[]) では? []の位置はどっちでもいいのでしょうか?
お礼
ご回答ありがとうございます。 リカバリ前に実行できたときのソースと、その部分は変わっていません。 DINO-PIEさんのように書き換えて、コンパイルからやり直してみましたが、やはり実行できませんでした。
お礼
再度のご回答ありがとうございます。 CLASSPATHを削除したら実行できました! 聞いたところ、家族は環境変数のところをまったくいじっていませんでした。 というより、知りませんでした(笑) そうすると、なにかアプリケーションをインストールしたときに変わってしまったんでしょうか。 万が一、今後同じようなことがありましたらこちらの方法、試してみます。