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
。
但为什么在消息中表示类有差异,即使用斜杠(路径)和点(包)?
答案 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。希望很清楚。