java - com/google/common/cache/RemovalCause java.lang.NoClassDefFoundError
问题描述
我正在使用 google guava 进行缓存,运行时能够找到 jar 中除 RemovalCause 之外的所有类,我使用 jar -tf 检查了该类是否存在于 jar 中,甚至重新部署以避免 jar 损坏情况。但仍然无法弄清楚这有什么问题?
threw exception com/google/common/cache/RemovalCause
java.lang.NoClassDefFoundError: com/google/common/cache/RemovalCause
at com.google.common.cache.LocalCache$Segment.expireEntries(LocalCache.java:2595) ~[guava-30.1-jre.jar:?]
at com.google.common.cache.LocalCache$Segment.runLockedCleanup(LocalCache.java:3452) ~[guava-30.1-jre.jar:?]
at com.google.common.cache.LocalCache$Segment.preWriteCleanup(LocalCache.java:3434) ~[guava-30.1-jre.jar:?]
at com.google.common.cache.LocalCache$Segment.put(LocalCache.java:2774) ~[guava-30.1-jre.jar:?]
at com.google.common.cache.LocalCache.put(LocalCache.java:4181) ~[guava-30.1-jre.jar:?]
at com.google.common.cache.LocalCache$LocalManualCache.put(LocalCache.java:4865) ~[guava-30.1-jre.jar:?]
解决方案
发现,当应用程序启动/关闭并且服务器是 tomcat 时,问题就发生了。Tomcat 上的类似问题也有报告称,静态类或枚举在启动期间或应用程序关闭时由类加载器卸载。此外,由于大多数框架(如 spring)会在应用程序出现故障时停止接收休息请求,因此,该问题可能仅发生在消息订阅(kafka 或类似)或计划作业中。
推荐阅读
- angularjs - Angular Firebase 无法调用重置密码
- java - 用Java解析Json结构化文件
- biztalk - BizTalk App Insights UI 因无法从下拉列表中选择而失败
- python - 使用 python3 时出现 Lambda 函数错误
- php - 如何在我的网站上加载另一个网站的验证码?
- angularjs - 我想在角度 js 中选择列表项时显示模式窗口
- python - 当我尝试运行 tensorflow 时,我注意到 GPU 没有被使用,尽管我使用的是 tensorflow GPU 版本。有什么解决方法吗?
- kotlin - 已添加片段:GalleryFragment{ef2fd8d #6 id=0x7f090081
- javascript - 应该如何构建 HTML 的布局以便在 D3 中有多个相互关联的图表
- c++ - 检测我是在构建可执行文件还是动态库?