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 回答