Eclipse在运行时抛出ExceptionInInitializerError,在调试时抛出NoClassDefFoundError

时间:2010-09-27 15:13:57

标签: java eclipse noclassdeffounderror

项目A取决于项目B.

在编译时,一切正常。

在调试时,当调用项目B的类bClass的静态函数时,我得到NoClassDefFoundError。

运行时,我得到ExceptionInInitializerError。

此外,bClass有一个静态初始化器,当我在那里放置一个断点时,它永远不会到达它 - 这对我来说似乎很奇怪,但也有意义,因为可能找不到类。

知道怎么解决?我已经根据我的理解检查了所有依赖项。

2 个答案:

答案 0 :(得分:1)

对于NoClassDefFound异常,请针对编译时类路径仔细检查运行时类路径。 Eclipse通常使用运行时CP的编译时类路径,但如果您修改了默认启动配置,它们可能不再匹配。

答案 1 :(得分:0)

我经常发现,如果静态初始化程序抛出异常,那么你会得到这些令人困惑和误导的结果。试试这个:在静态初始化程序中的所有代码周围放置一个try / catch语句,并在catch块中记录异常(在错误日志中或控制台中)。如果有异常被抛出,这将有助于缩小范围。

static {
    try {
        // ... your code here ...
    } catch (Throwable t) {
        t.printStackTrace();
    }
}

当你完成调试时,你应该删除这个try / catch子句,因为它吞下了异常。