未创建类文件

时间:2013-03-15 11:39:40

标签: java noclassdeffounderror

我使用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);

1 个答案:

答案 0 :(得分:0)

我不确定你是否已经这样做了(通过阅读上面的例子),但我也会将你的代码拆分为每个类和接口的单独文件。

您还需要确保这些类是公共的,并且可以根据需要使用其他包中的类。 (显然,确保方法和成员是私有的或在必要时受到保护!)

(编辑:还有其他人先前正确回答你需要在

之前拥有“课程”
superXXX implements onlyXXX{...

所以它应该是

class superXXX implements onlyXXX{...

但由于某种原因,答案不再存在......)