- ベストアンサー
JAVA実行時のエラーメッセージについて
コンパイル後、実行するとコードはどのようなものでも、同様のエラーメッセージが表示されます。 例えば、超基本の下記のソースでも表示されます。 //Sample01.java class Sample01 { public static void main (String args[]) { System.out.println("Hello World"); } } エラーメッセージは同様に、 「Excption in thread "main"java.lang.NoClassDefFoundError: Sample01」 と表示されてしまいます。 このエラーの対処方法をお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
どうも、#1です。 実行できるようになって、良かったですね。これからもがんばってください。 さて、お礼のところにもう1個質問が書いてあったので、それにお答えしますと。 パスを設定するときにWin98ならAutoExec.bat、Win2000もしくはXPだとシステムから環境変数で設定したと思いますが、そこに新規でCLASSPATHというのを作ります。で、値を D:\Java となります。 #1のお礼のところには、D:\Java\Practiceとなっていますが、もし、こっちをフォルダとして使っているならこっちを指定してください。 ようするに、作業フォルダをクラスパスとすればよいです。作業フォルダを新規に作ったときは、環境変数も付け足すなりなんなりしなくてはいけません。 僕も、前はクラスパスなしで実行できたんですが、最近は駄目なんですけど、なんでですかね?Javaバーチャルマシンの仕様だと、カレントディレクトリもClassファイルを探してくれると聞いたんですが。。。その辺は、謎です。 では、がんばってください。
その他の回答 (4)
- UKY
- ベストアンサー率50% (604/1207)
クラスパスが云々という話はJavaプログラミングをするうえで避けては通れない道ですが、何にせよCLASSPATHについて理解のないまま環境変数でCLASSPATHを設定するのはあまりお勧めできません。 PATH環境変数の設定は必須ですが、CLASSPATH環境変数は設定しなくても動きます。むしろ、下手にCLASSPATH環境変数を設定すると、No.2の回答の補足にあるようなエラーが出る羽目になります。 クラスパスは、No.1やNo.2の回答にあるように、-cp (あるいは -classpath でも同じことですが)コマンドを使って指定するのが推奨されていますので、それに従うのが良いと思います。 なお、CLASSPATH環境変数でも -cp コマンドでもクラスパスを設定しなかった場合は、カレントディレクトリが自動的にクラスパスになります。カレントディレクトリを変えるだけで、事実上クラスパスも変えることができるので、はじめのうちはこの「クラスパスをまったく設定しない」方法をお勧めします。 もちろん、クラスパスを環境変数で設定しないほうが良いというのには、理由があります。今回は D:\Java\Practice フォルダにクラスファイルを置かれているようですが、例えば次に D:\Java\Practice2 という新たなフォルダに別なプログラムを作って実行するとなったらどうでしょうか。プログラムが変わるたびに環境変数をいちいち設定し直していたのでは切りがありません。 そもそも環境変数というのは、状況に応じて頻繁に変更されるというような設計にはなっていないのです。 OS全体の「環境」に関する設定をするためにあるのであって、たかが一つのクラスファイルのためだけにCLASSPATH環境変数を使うというのは誤りなのです。 個々のプログラムに対してクラスパスを設定するには、No.3の回答にあるようにそれぞれのコマンドプロンプトでCLASSPATHを設定するとか、あるいは -cp コマンドを使うというのが正式な作法なのです。
お礼
ご回答ありがとうございます。 以前JDK1.3を使っていたときは、 特にCLASSPATH環境変数の設定無しで、 実行できたいのですが、今回j2sdk-1_4_2_01を、 入れてみたところ、エラーが出てしまいました。 UKYさんのおっしゃるとおり-cpを使うべきだとは 思うのですが、フリーソフトのCPad for Java2SDKという、 ソフトを使う都合上-cpを付けずに実行したかったのです。 ただ、ソフトの方で環境変数の設定ができまして、 解決できました。 また、何かありましたらアドバイスを宜しくお願いいたします。
- midomaru
- ベストアンサー率14% (13/90)
pathはjavaやjavacのあるファイルを指定 例えば、c:\jdk1.3\bin classpathはclassファイルがあるファイルを指定ですよ プロンプト画面で、set classpathでclasspathがどうなってるのか見れますよ。pathはset pathです。環境変数でも変えられますが、コマンドの後ろに=をつければ、プロンプト画面でも変えられます。変わったら普通にやれますよ。 頑張ってください。 例 set classpath=c:\JData 分かるといいな…
お礼
ご回答ありがとうございます。 分かりました、実行できるようになりました。
- aton
- ベストアンサー率47% (160/334)
FAQなのですが,過去質問を探すのも面倒なので..。 CLASSPATHにカレントディレクトリ(.)が入っていないのが原因ではないかと思います。 java -classpath . Sample01 として実行してみてください。
補足
ご回答ありがとうございます。 java -classpath . Sample01 と入力したところ、 問題なく実行することができました。 以前は問題なく実行できていて、環境変数などを いじった覚えもないのですが、久しぶりにJAVAをやったところ、 今回のようなエラーが表示されてしまいました。 参考URLも拝見させていただきましたが、 -classpathをつけずに実行するためには、 環境変数の設定を行わなければいけないかと思いますが、 ユーザー環境変数にどのように設定を行えばいいのでしょうか? 変数名:CLASSPATH 変数値:D:\jdk1.3\bin と設定してみたのですがエラーになってしまいました。 設定の仕方を教えていただけると助かります。
- kamkamkam3
- ベストアンサー率42% (216/514)
作業フォルダが○○だとします java -cp C:\○○ Sample01
補足
ご回答ありがとうございます。 java -cp D:\java\Practice Sample01 と実行したところ正常に動きました。 以前は-cpを付けずに問題なく動いていたのですが、 環境変数にどのような設定を行えば-cpを付けずに 動くのか、お分かりになるようでしたら、 教えていただけませんでしょうか? 私の環境ですが、 プログラム本体が、D:\jdk1.3、 保存先が、D:\java、 になります。
お礼
度々ご回答いただきましてありがとうございます。 おかげさまで実行できるようになりました。 私もjdk1.3の時はCLASSPATHの設定無しで問題が無かったのですが、 一度、j2sdk1.4.2_01をインストールしたところ、 アンインストールしても今回の様になってしまいました。 SDKの使用が変わってしまったようですね。 本当に今回は助かりました、また何かありましたら宜しくお願いいたします。