0

私は emacs を使用して Java を記述し、Mac のターミナルを介してコンパイルおよび実行します。次のエラー メッセージが表示されます。

Exception in thread "main" java.lang.NoClassDefFoundError: xxx
    at Testprogram2.<init>(Task.java:86)
    at Task.main(Task.java:12)
Caused by: java.lang.ClassNotFoundException: xxx
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    ... 2 more

xxx クラスの名前も変更しましたが、それでもこのクラスは作成されません。他にも約 20 個のクラスが作成されていますが、このクラスは作成されていません。これを解決するには?

編集:

クラスは次のように定義されます (特別なことはありません)。

class xxx extends superXXX{

     xxx(String number, double price){
          super(number,price);
     }

     //other methods here

}

class superXXX implements onlyXXX{

    String number;
    double price;
    double result;

    superXXX(String number, double price){
        this.number = number;
        this.price = price;
        double p = calculatePrice();
        result = p;
    }

   //other methods here

}

最初に「java Task.java」と書きます。次に、ターミナルに「javac Task」と書き込んだ後、xxx のオブジェクトを作成する行に遭遇すると、次のエラー メッセージが表示されます。

xxx pb1 = new xxx("Reg1", 5000.0);
4

1 に答える 1

0

(上記の例を読んで)既にこれを行っているかどうかはわかりませんが、コードをクラスとインターフェイスごとに個別のファイルに分割することもできます。

また、クラスが公開されていることを確認し、必要に応じて他のパッケージのクラスで使用できるようにする必要があります。(明らかに、必要に応じて、メソッドとメンバーがプライベートまたは保護されていることを確認してください!)

(編集:また、他の誰かが以前に「クラス」を持っている必要があると正しく答えました

superXXX implements onlyXXX{...

だからそうあるべきだ

class superXXX implements onlyXXX{...

しかし、何らかの理由でその答えはもう存在しません...)

于 2013-03-15T12:11:36.317 に答える