2

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在运行时找不到类时抛出。

但是为什么在消息中表示类时会有所不同,即用斜杠(路径)和点(包)?

4

2 回答 2

2

如果您查看 javadoc 中的NoClassDefFoundError 异常,您会看到它有两个构造函数,其中一个是接受消息作为参数。

因此,找不到类的名称格式取决于引发异常的代码。

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

于 2012-05-02T12:52:15.537 回答
0

好像 java.lang.NoClassDefFoundError: com/xxx/xxx/AbapException is missing。这不在 sapjco3.jar 中。

假设 a.class 和 b.class 是必需的,加载顺序是 a,b。如果 a 和 b 不在类路径中,您将首先得到 a 丢失。如果将 a 添加到类路径中,您将丢失 b。希望这很清楚。

于 2012-05-02T12:35:53.700 回答