Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

初歩的質問失礼いたします。

現在Javaの勉強をしているのですが、
Exception in thread "main" java.lang.NoClassDefFoundError: sample1
のエラーメッセージが出て、ネット検索でここにたどり着きました。

--------------sample.javaファイル---------------
D:\WORK\sample1\sample1.java
--
class sample1
{
   public static void main(String args[])
   {
      System.out.println("HelloWorld");
   }
}
-----------------------------------------------
なお、コンパイル/実行はDOSで行っています。


コンパイルはうまくいくので、sample1.classファイルが作成されています。
D:\work\sample1\sample1.java
D:\work\sample1\sample1.class

DOSで、D:\work\sample1へ移動し、
java sample1
で実行すると、下記エラーが出ます。

Exception in thread "main" java.lang.NoClassDefFoundError: sample1


ここで、
java -classpath . sample1
で実行すると、正常に実行されるのですが、これって環境変数でクラスパスを指定しなくてはいけないのでしたっけ?
実は、OSを1回再インストールしておりまして、J2SDKもすべて再インストしなおしております。それまでは、クラスパス指定なしで
java sample1
だけで実行できていたのですが...

どなたか、ピンと来た方がいらっしゃいましたらご教示お願いします。
なお、OS再インスト前の状況と比べると、今回はEclipseをインストールしているってところくらいの違いだと思います。

4

回答

3983

閲覧

4件の回答

評価

0

>これって環境変数でクラスパスを指定しなくてはいけないのでしたっけ?
そうです。

評価

0

mioさん、ありがとうございます。
環境変数でクラスパス指定することにします。

ただ、
java sample1
だけで実行出来た理由がわからないのが気になります。
もう一度いろいろ調べてみます。
ありがとうございました。

評価

0

class sample1 が public じゃないからです。

評価

0

あ、嘘です。
ちょい勘違いしてました...///

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。