首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >com/google/common/cache/RemovalCause原因java.lang.NoClassDefFoundError

com/google/common/cache/RemovalCause原因java.lang.NoClassDefFoundError
EN

Stack Overflow用户
提问于 2021-09-29 06:45:26
回答 2查看 69关注 0票数 0

我使用google guava进行缓存,运行时能够找到jar中除RemovalCause之外的所有类,我已经使用jar -tf检查了类是否存在于jar中,甚至重新部署以避免jar损坏的情况。但是仍然不能弄清楚这里面出了什么问题?

代码语言:javascript
复制
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:?]
EN

回答 2

Stack Overflow用户

发布于 2021-09-29 07:05:03

尝试使用IntelliJ构建一个胖Jar,并将所有依赖项放入其中。

这就是方法:

  • 按钮中转到“项目设置&工件”“artifact

  • Choose JAR -> From Module With dependencies

  • Choose
  1. ”,通过“+”按钮添加一个Main
  2. 在创建的工件中单击,您将看到如下所示的内容:

  1. 选择右键中的所有元素,然后右键单击并放入输出根
  2. 确保已将所有可用元素复制到jar中。
  3. 在项目根目录下创建META- into文件夹,将其复制到上面上下文菜单中的资源folder.
  4. Click Build,然后构建工件。

祝好运!

票数 0
EN

Stack Overflow用户

发布于 2021-10-19 18:45:41

发现,当应用程序启动/关闭并且服务器是tomcat时,问题就会发生。tomcat上的类似问题也有报道,静态类或枚举在启动或应用程序关闭时被类加载器卸载。此外,像spring这样的大多数框架会在应用程序宕机时停止rest请求,因此,这个问题可能只会发生在消息订阅(kafka或类似的)或计划的作业中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69371585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档