我使用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:?]发布于 2021-09-29 07:05:03
尝试使用IntelliJ构建一个胖Jar,并将所有依赖项放入其中。
这就是方法:
在
JAR -> From Module With dependencies
+”按钮添加一个Main类

Build,然后构建工件。祝好运!
发布于 2021-10-19 18:45:41
发现,当应用程序启动/关闭并且服务器是tomcat时,问题就会发生。tomcat上的类似问题也有报道,静态类或枚举在启动或应用程序关闭时被类加载器卸载。此外,像spring这样的大多数框架会在应用程序宕机时停止rest请求,因此,这个问题可能只会发生在消息订阅(kafka或类似的)或计划的作业中。
https://stackoverflow.com/questions/69371585
复制相似问题