Java 空NoClassDefFoundError的原因是什么?

Java 空NoClassDefFoundError的原因是什么?,java,exception,classloader,Java,Exception,Classloader,我收到一个消息值为null的NoClassDefFoundError。我不知道哪个类有初始化问题。顶级跟踪是类的构造函数,而不是类的静态部分。这种例外的原因是什么 java.lang.NoClassDefFoundError at com.company.xyz.FooBar.<init>(FooBar:76) .... 我认为您使用的是一个依赖于另一个.jar文件的库(.jar)文件,但您当前的项目中没有该依赖的.jar文件。请列出完整的错误消息,这样我们就可以

我收到一个消息值为null的NoClassDefFoundError。我不知道哪个类有初始化问题。顶级跟踪是类的构造函数,而不是类的静态部分。这种例外的原因是什么

java.lang.NoClassDefFoundError
    at com.company.xyz.FooBar.<init>(FooBar:76) 
    ....

我认为您使用的是一个依赖于另一个.jar文件的库(.jar)文件,但您当前的项目中没有该依赖的.jar文件。请列出完整的错误消息,这样我们就可以在大多数情况下看到确切的problem=D

java.lang.NoClassDefFoundError不是实际的问题。在此之前应该还有一个例外。
对此类的任何访问都将触发NoClassDefFound,但这仅意味着未加载该类。它没有告诉你为什么。第76行可能包含答案。

最有可能的情况是,您的代码针对某个库的特定版本编译,并针对另一个版本运行。这基本上是一个链接错误。 识别导致问题的库并不总是一件小事,但是行号应该表明错误发生时加载的是哪个类

更新:在您发布的堆栈跟踪中,错误源于com.company.xyz.FooBar类的构造函数(第76行),毫无疑问,它是gov.nasa.programs.supersecret.bases.alphacentauri的替身


该类必须依赖于另一个此时无法加载的类,很可能是因为它不存在于编译时所针对的确切版本中。请注意,实际问题可能会进一步深入,因此,如果排除它,请确保查看该类的依赖关系。

可能是构造函数内部使用的某个类。你能展示一些代码吗(特别是Foobar:76)?@Manish我有添加代码序列SMSG是问题所在。很可能它找不到资源包:LANGUAGE_RESOURCES=ResourceBundle.getBundle(“com.company.xyz.i18n.LanguageResources”);这是完整的信息。只有stacktrace更长。
drv = data.get( i ).getDrivers();
drvnameToAdd = Msg.getMsg( "msgkey" ); <-- line 76
allNotImported.add( drvnameToAdd );
private static final ResourceBundle LANGUAGE_RESOURCES;
static {
    LANGUAGE_RESOURCES = ResourceBundle.getBundle( "com.company.xyz.i18n.LanguageResources" );
}

public static String getMsg( String msgID ) {
    String msg;
    try {
        msg = LANGUAGE_RESOURCES.getString( msgID );
    } catch( Throwable e ) {
        msg = "$" + msgID + "$";
    }
    return msg;
}