我使用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);
答案 0 :(得分:0)
我不确定你是否已经这样做了(通过阅读上面的例子),但我也会将你的代码拆分为每个类和接口的单独文件。
您还需要确保这些类是公共的,并且可以根据需要使用其他包中的类。 (显然,确保方法和成员是私有的或在必要时受到保护!)
(编辑:还有其他人先前正确回答你需要在
之前拥有“课程”superXXX implements onlyXXX{...
所以它应该是
class superXXX implements onlyXXX{...
但由于某种原因,答案不再存在......)