我有一个具有私有构造函数的Java类:
aov2
这个类正在这样的应用程序中使用:
public class MyClass {
private static final MyClass myClass = new MyClass();
private MyClass() {}
public static MyClass getInstance() {
return myClass;
}
}
整个应用程序也作为JAR导出,并在另一个应用程序中使用。
当我尝试在另一个应用程序中执行相同操作时(从JAR调用它)我收到以下错误:
MyClass myClass = MyClass.getInstance();
我不确定这是否是具有 私有构造函数 的类所需的行为,或者它是否存在其他问题?
谢谢!
答案 0 :(得分:3)
您的错误与静态或构造函数无关。来自javadocs:
如果Java虚拟机或ClassLoader实例尝试,则抛出该异常 加载类的定义(作为普通方法调用的一部分或 作为使用新表达式创建新实例的一部分)和否 可以找到类的定义。搜索过的课程 编译当前正在执行的类时存在定义, 但无法再找到定义。
NoClassDefFoundError表示当您尝试运行程序时,类定义不可用。这是某种路径错误 - 要么这个类不在导出的jar中,要么它在运行时没有被包含在类路径中。
答案 1 :(得分:1)
您确定在第二个应用程序的类路径中正确包含了JAR吗?
答案 2 :(得分:0)
NoClassDefFoundError 当JVM尝试加载作为代码执行一部分的特定类时(作为普通方法调用的一部分或作为使用new关键字创建实例的一部分)发生class不在您的类路径中,但在编译时出现,因为为了执行您的程序,您需要编译它,如果您尝试使用不存在的类,编译器将引发编译错误。