You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Batch集成Kafka触发ClassNotFoundException: com.google.common.cache.CacheLoader,需补充什么依赖?

Spring Batch集成Kafka触发ClassNotFoundException: com.google.common.cache.CacheLoader,需补充什么依赖?

嗨,我来帮你搞定这个问题!

你遇到的ClassNotFoundException: com.google.common.cache.CacheLoader原因很明确——这个类属于Google Guava库,但你的项目里现在只把Guava当成了测试依赖,运行时根本找不到它。

问题根源

看你提供的pom.xml,Guava的依赖配置是这样的:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>20.0</version>
    <scope>test</scope>
</dependency>

<scope>test</scope>意味着这个库只会在单元测试阶段生效,而你的Spring Batch任务是在web应用运行时触发的(不管是本地还是OpenShift环境),自然会找不到这个类。至于另一个CronJob模块能正常运行,大概率是那个模块里Guava的依赖没有加test scope,运行时能正常访问到。

解决方法

把Guava依赖的<scope>test</scope>去掉,让它成为编译/运行时可用的依赖就行。另外,因为你用了Spring Boot Parent(3.1.4版本),建议直接用Spring Boot依赖管理的版本,避免版本兼容问题:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <!-- 去掉test scope,默认就是compile scope,运行时可用 -->
    <!-- 不需要手动指定版本,Spring Boot Parent会帮你管理兼容的版本 -->
</dependency>

如果因为某些原因必须指定版本,Spring Boot 3.1.x对应的兼容Guava版本是31.1-jre,你可以手动加上<version>31.1-jre</version>。

验证步骤

  1. 修改pom.xml后,执行mvn clean install重新构建项目
  2. 本地启动应用测试,或者重新部署到OpenShift
  3. 触发Spring Batch任务,应该就不会再出现这个ClassNotFoundException了

备注:内容来源于stack exchange,提问作者Kris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 19:13:10