java - 找到 java.lang.NoClassDefFoundError 的真正原因
问题描述
我正在使用 spring boot 来启动一个使用 java8 的 RMI 服务器应用程序。在极少数情况下:
- 应用程序无法初始化类,抛出“java.lang.NoClassDefFoundError:无法初始化类 X”。
- X 并不总是同一个类,但到目前为止,所有这些类都具有共同的静态成员初始化。(并不总是直接的,所以堆栈跟踪并不总是指向静态变量......)
- java 进程仍然有一个有效的 jar 读取文件句柄。
- jar 文件在进程开始后没有更改。
- 内存不是问题。
由于问题非常非常罕见,我无法重现它。
你将如何继续发现问题?
是否可以获得有关 NoClassDefFoundError 真正原因的更多信息?
解决方案
java.lang.NoClassDefFoundError:
表示在类路径中找不到您尝试运行的类。
您需要将包含此类的类或 .jar 文件添加到 java 类路径中。
当编译器可以成功编译类,但 Java 运行时找不到类文件时会发生错误。它通常发生在执行静态块或初始化类的静态字段时出现异常,因此类初始化失败。
修复: 1.确保包含该类的类或jar 在类路径中是否可用。
2.classpath 然后很可能类路径被覆盖
3.如果一个应用程序使用多个类加载器,一个类加载器加载的类可能无法被其他类加载器使用。
推荐阅读
- azure - 部署应用程序时如何更改计划?
- javascript - 无法编译 ./src/App.js 未找到模块:无法解析“firebase”
- ios - 仅在 iOS15 中开始滚动时导航栏是透明的
- android - 创建 Jetpack Compose Row,里面有 10 个圆圈,取决于行宽
- reactjs - 在 React 中查找特定的子组件,无论深度如何
- powerapps - 如何根据电源应用中的特定列值过滤图库?
- php - 网站显示 http 错误 500,所有似乎在 conf 文件中都正确
- python - 基于其他图像的蒙版“填充”区域
- java - 如何通过地图
> 在 application.properties spring boot 应用程序中 - javascript - 尝试导入 amCharts 模块时出现语法错误