• 締切済み

コンパイルが通らない

うちのPCでは確実にコンパイルが通って、実行までできたプログラムが他の人のPCではコンパイルが通らなかったり実行ができません。 実行する際には javac nishi.java java nishi とやると以下のようなエラーがでて実行ができません(コンパイルは通ります。決してjava nishi.classとかjava nishi.javaといったお約束の間違いは行っていません) Exception in thread "main"java.lang.NoClassDefFoundError:nishi また違うファイルではこっちでコンパイルが通るのにあっちではコンパイルが通らなかったりします。バージョンが違うためでしょうか?僕のバージョンが1.5.08?で相手が1.4.2くらいです。だからコンパイルが通らないの?

みんなの回答

回答No.4

>古い1.3.0でコンパイルとおりました。なぜか1.4.2では通りませんでした。 それも「1.3.0」と「1.4.2」の「バージョンの違い」では? エラー内容がわかりませんので、「想像」ですが。 今わかってる情報からは「バージョンの違い」としか判断できません。 javacのオプションに「-target」があるので、VMのバージョンを指定してみては? 詳細はドキュメントを読んで下さい。

回答No.3

>もしかして、 >java.exeがあるフォルダの中でプログラムのクラスファイルを >実行するならCLASSPATHの設定云々は関係ないですか?? もし仮に、↑でうまくいっても、お奨めできませんね。 「CLASSPATH」の設定をちゃんとするか、EclipseなどのIDEを使用した方が良いです。

uta_ma2000
質問者

補足

コンパイルが通らない理由はバージョンの違いではないようです。 古い1.3.0でコンパイルとおりました。なぜか1.4.2では通りませんでした。

回答No.2

>>またコンパイルが通ったり、通らなかったりするのはバージョンの違いだと思います。 >そうかな?バージョンが違うからかな? それとも、同じJavaのバージョンのマシンで 「まったく同じソース」がコンパイルが通ったり、通らなかったりする のでしょうか? それならJavaが壊れてる可能性が大なので、1度アンインストールして、もう1度インストールしましょう。 >クラスパスって、XPの場合なら >コントロールパネル→パフォーマンスとメンテナンスでパスを通すっ >てやつですよね?たとえばフォルダC:hogeにrr.exeファイルがあると >きに >C:hoge;というようにパスを設定するとコマンドプロンプトでどこから>でもrr.exeができるようになるあれですよね? それは「環境変数のPATH」。 そっちじゃなくて、「環境変数のCLASSPATH」。 PATHはシステムがプログラムを探す場所を記述しておく環境変数で、 CLASSPATHはJavaがクラスを探す場所を記述しておく環境変数。

uta_ma2000
質問者

お礼

もしかして、 java.exeがあるフォルダの中でプログラムのクラスファイルを実行するならCLASSPATHの設定云々は関係ないですか??

uta_ma2000
質問者

補足

ああああれねあれね。あの上の方にあるあるやつねOKOK

回答No.1

おそらくExceptionの内容から「nishi.class」があるディレクトリに「CLASSPATH」が通ってないのが原因でしょう。 「CLASSPATH」に「.;」を追加すれば良いはずです。 またコンパイルが通ったり、通らなかったりするのはバージョンの違いだと思います。 「こっち」でコンパイルが通って、「あっち」でコンパイルが通らないのは、「Java 5.0(1.5)」から追加されたクラスorメソッドを使っているからでしょう。 そこらへんは「コンパイルエラー」の内容を見れば「どのクラス」「どのメソッド」がそれに該当するかわかりますので、Javadocなどを調べればすぐわかるでしょう。

uta_ma2000
質問者

補足

>またコンパイルが通ったり、通らなかったりするのはバージョンの違いだと思います。 そうかな?バージョンが違うからかな? クラスパスって、XPの場合なら コントロールパネル→パフォーマンスとメンテナンスでパスを通すってやつですよね?たとえばフォルダC:hogeにrr.exeファイルがあるときに C:hoge;というようにパスを設定するとコマンドプロンプトでどこからでもrr.exeができるようになるあれですよね?