- ベストアンサー
Javaコンパイルエラーの解決法とは?
- 初歩中の初歩でつまずいてます。自分で作成した、DSUTils.javaというファイルをコンパイルしてから、main()を含むTestDSUTils.javaをコンパイルしようとしたのですが、出来ませんでした。
- DSUTils.classファイルは作成されてます。なぜこのようなエラーが出るのか、教えていただけないでしょうか。
- よろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
うーん、ローテクなもんで僕自身ヘボイんですが、、、 > at DSUtils.<init>(DSUtils.java:5) > at TestDSUtils.main(TestDSUtils.java:6) って、なっているってことはクラス DSUtils がちゃんと初期化されてないってこと? だから main メソッドでインスタンスを生成できないよんって言ってるのかなぁ? ん? wnonstandard.jar というパッケージを使用するんですよね? > E:\My Work>echo %classpath% > ./;D:\j2sdk1.4.0_01\jre\lib\ext みると wnonstandard.jar の影が見当たらないんですが? パッケージを利用するためにはフルパスとファイル名まで環境変数に設定しないといけないような、、、? ひょっとするとそれが原因かもしれないです。 再度、 SET CLASSPATH=%CLASSPATH%;D:\j2sdk1.4.0_01\jre\lib\ext\wnonstandard.jar というふうに設定してみていただけます?
その他の回答 (6)
- HogePiyo
- ベストアンサー率57% (24/42)
うん、ひょっとしたら -soh- さんの言う通りクラスパスの設定が上手くいってないのかもしれないです。 ソースは問題ないからつまり実行環境の設定が上手くいっていないということだろうと思います。 いちど、クラスパスにカレントフォルダを設定してみてください。 http://java-house.jp/ml/archive/j-h-b/025897.html と、 http://www.smg.co.jp/seminar/java/J_lecture10.html 辺りをご参照あれ。 もしかして JDK 1.2 (Java2) 以前をお使いじゃありませんか?だとしたら、 http://www.hyuki.com/jb/#cantfind ↑ということらしいです。
- 参考URL:
- http://java-house.jp/ml/
補足
HogePiyoさん、-soh-さん、私の恐ろしいくらい低レベ ルな質問に付き合ってくださいまして、ありがとうござ います。後もう少しのところだと思いますので、助けて ください…。 ===========DOS-PROMPT============= E:\My Work>echo %classpath% ./;D:\j2sdk1.4.0_01\jre\lib\ext E:\My Work>javac TestDSUtils.java DSUtils.java E:\My Work>java TestDSUtils Exception in thread "main" java.lang.NoClassDefFoundError: weiss/nonstandard/Arr ayStack at DSUtils.<init>(DSUtils.java:5) at TestDSUtils.main(TestDSUtils.java:6) =============================================== D:\j2sdk1.4.0_01\jre\lib\extにwnonstandard.jarとい うパッケージを入れ、classpath変数の元の値も知らず に変数をいじってしまったことが、原因のようです。今 回、お二方のアドバイス通り、classpathにカレントデ ィレクトリも追加いたしました。しかしながら、未だに 上記のようなエラーが出力されます。ちなみに、 DSUTils.javaの5行目は private ArrayStack array_stack1 = new ArrayStack(); TestDSUtils.javaの6行目は DSUtils dsutils = new DSUtils(); となっております。ArrayStackは例のパッケージの中で 定義されています。 長くなりましたが、再度よろしくお願いします。
- -soh-
- ベストアンサー率27% (55/201)
クラスパスが違うところに通ってるから DSUtils.class を見つけられないんじゃないの? 環境変数のCLASS_PATHに自分の環境を付け加えるか javaコマンド実行するとき java -cp ./ TestDSUtils ってクラスパス指定してみてはいかが?
- HogePiyo
- ベストアンサー率57% (24/42)
うーん、ちょっとわかんないです。 エラー表示は Exception in thread "main" java.lang.NoClassDefFoundError: TestDSUtils の一行だけだったんですか? もし違うならエラーコードを提示していただけませんか? コンパイルが通っているんでどうなんだろうかって思ってるんですが、ソースに特に間違いはなさそうですか? テスト用のソースを用意したんでそれでいっぺん試してみていただけませんか? Test.java ************************** class Test { public static void main( String[] args ){ PRINT print = new PRINT(); print.show_mes(); } } ************************** PRINT.java ************************** class PRINT { public void show_mes(){ System.out.println( "Hello World !!" ); } } ************************** 一応ウチではちゃんと表示されました。
補足
テキストエディターにHogePiyoさんのコードをコピペしました。結果、前と同じエラーが出ました…。ということは、何が原因なのでしょうか?お願いします!!!
- HogePiyo
- ベストアンサー率57% (24/42)
ひょっとしてコンパイル時のファイル名大文字のところまで小文字にしてませんか? Test.java × javac test.java ○ javac Test.java testdsutils.java dsutils.java はホントは、 TestDSUtils.java DSUtils.java じゃありませんか? もしそうなら、 javac TestDSUtils.java DSUtils.java とかでちゃんと大文字小文字まで正確にファイル名を入力してコンパイルを通してみてください。
補足
コンパイラーに通す時はファイル名を指定するだけなの で、関係ないかなー…と思って全部小文字で打ってしま いました。で、再度挑戦してみた結果 E:\My Work>javac DSUtils.java E:\My Work>javac TestDSUtils.java TestDSUtils.java:6: シンボルを解釈処理できません。 シンボル: クラス DSUtils 位置 : TestDSUtils の クラス DSUtils dsutils = new DSUtils(); ^ TestDSUtils.java:6: シンボルを解釈処理できません。 シンボル: クラス DSUtils 位置 : TestDSUtils の クラス DSUtils dsutils = new DSUtils(); ^ エラー 2 個 E:\My Work>javac TestDSUtils.java DSUtils.java E:\My Work>java TestDSUtils Exception in thread "main" java.lang.NoClassDefFoundError: TestDSUtils …。
- HogePiyo
- ベストアンサー率57% (24/42)
javac testdsutils.java dsutils.java と、してみるとか?
補足
E:\My Work>javac testdsutils.java dsutils.java とすることでコンパイラーは通りました。しかし、クラ スファイルを起動?することが出来ません。 E:\My Work>java TestDSUtils Exception in thread "main" java.lang.NoClassDefFoundError: TestDSUtils これはTestDSUtils.classの中にmain()がないというこ とでしょうか。実際にはあるのですが…。
- tekebon
- ベストアンサー率62% (36/58)
DSU-T-ilsクラスを作成したのに対してDSU-t-ilsのオブジェクトを作成してますね 単なるスペルミスと思われるのですが(^^; ご確認ください。
補足
スペルミスを修正しました。クラスファイルは DSUtils.classですので、DSUtilsのオブジェクトを TestDSUtils.javaの中で作成しようとしているのです が、いまだに上手くいきません。他にどの様な事が考え られるのでしょうか?よろしくお願いします。 E:\My Work>javac dsutils.java E:\My Work>javac testdsutils.java testdsutils.java:6: シンボルを解釈処理できません。 シンボル: クラス DSUtils 位置 : TestDSUtils の クラス DSUtils dsutils = new DSUtils(); ^ testdsutils.java:6: シンボルを解釈処理できません。 シンボル: クラス DSUtils 位置 : TestDSUtils の クラス DSUtils dsutils = new DSUtils(); ^
お礼
まさにHogePiyoさんの言うとおり、パッケージのファイ ル名を環境変数に加えることで、コンパイルと実行が出 来ました。何回も低レベルな質問に答えてくださって、 本当にありがとうございました。