[英]NoClassDefFoundError on Non-static class with private constructor
我有一个具有私有构造函数的Java类:
public class MyClass {
private static final MyClass myClass = new MyClass();
private MyClass() {}
public static MyClass getInstance() {
return myClass;
}
}
此类在应用程序中的用法如下:
MyClass myClass = MyClass.getInstance();
整个应用程序也将导出为JAR,并在另一个应用程序中使用。
当我尝试在另一个应用程序中执行相同操作(从JAR调用该应用程序)时,出现以下错误:
java.lang.NoClassDefFoundError: Could not initialize class com.example.MyClass
我不确定这是否是具有私有构造函数的类的必需行为,还是存在其他问题?
谢谢!
您的错误与静态性或构造函数无关。 从javadocs :
如果Java虚拟机或ClassLoader实例尝试加载类的定义(作为常规方法调用的一部分或使用新表达式创建新实例的一部分)而抛出,则找不到该类的定义。 当前正在编译的类在编译时就存在搜索到的类定义,但是无法再找到该定义。
NoClassDefFoundError表示在尝试运行程序时类定义不可用。 这是某种路径错误-此类不在导出的jar中,或者在运行时未包含在类路径中。
您确定在第二个应用程序的类路径中正确包含了JAR吗?
当JVM尝试加载代码执行过程中的特定类(作为常规方法调用的一部分或使用new关键字创建实例的一部分)并且该类不在您的类路径中但存在时,发生NoClassDefFoundError在编译时,因为要执行程序,您需要对其进行编译;如果尝试使用不存在的类,则编译器将引发编译错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.