NoClassDefFoundError消息因上下文而异

时间:2012-05-02 12:21:58

标签: java noclassdeffounderror

NoClassDefFoundError在不同的上下文中给出了不同类型的消息

根据上下文,我的意思是,

背景1: 如果我删除sapjco3.jar,则消息为

java.lang.NoClassDefFoundError: com/xxx/xxx/AbapException

背景2: 如果我在webapp lib中添加jar文件,则消息为

java.lang.NoClassDefFoundError: com.xxx.xxx.CpicDriver

我理解在运行时找不到类时会抛出java.lang.NoClassDefFoundError

但为什么在消息中表示类有差异,即使用斜杠(路径)和点(包)?

2 个答案:

答案 0 :(得分:2)

如果你看一下NoClassDefFoundError exception,的javadoc,你会发现它有两个构造函数,其中一个构造函数接受一条消息作为参数。

因此,未找到类的名称格式取决于抛出异常的代码。

我不知道sapjco,但也许这两个类是由不同的类加载器加载的......

答案 1 :(得分:0)

似乎像java.lang.NoClassDefFoundError:缺少com / xxx / xxx / AbapException。这不是在sapjco3.jar。

假设需要a.class和b.class,加载顺序为a,b。如果a和b不在classpath中,你将首先得到一个缺失。如果在类路径中添加了a,则会丢失b。希望很清楚。