上下文是这样的:我有一个包含所有静态方法和一个静态初始化块的类。这个类是 Web 应用程序的一部分,它被打包成一个 war 并部署在 WebSphere 10 中。
在某些情况下,war 中的其他类尝试调用此类上的方法,却得到 NoClassDefFoundError。我觉得奇怪的是,我可以从日志中看到类的方法等已经被成功调用了多次,但是突然之间,一个相同的(以前成功的)方法调用现在会生成一个 NoClassDefFoundError。此时,将来对类的静态方法的任何此类调用都将生成该错误(直到重新启动 WebSpehere 容器或重新部署战争)。
让我感到困惑的是为什么这个类在抛出 NoClassDefFoundError 之前似乎工作了一段时间。有关此异常的文档说:
搜索到的类定义在编译当前执行的类时已经存在,但无法再找到该定义。
所以我的问题是,为什么一个类可以使用一段时间,清楚地响应对其静态方法的调用,然后抛出 NoClassDefFoundError?