Spring Boot项目Jar包运行时调用功能报com.google.common.collect.Lists找不到异常求助
解决Spring Boot Jar包运行时Guava类找不到的问题
这个问题我碰到过好多次了,本质就是Guava依赖虽然在编译时能找到,但运行时的可执行Jar里没包含对应的类文件,给你几个一步步排查解决的办法:
检查依赖配置的Scope
很多时候问题出在依赖的scope设置上,如果你的Guava依赖用了provided或者test,打包时这些依赖不会被包含到最终的可执行Jar里。确保你的Maven依赖是这样的(替换成你需要的版本号):<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>32.1.3-jre</version> </dependency>如果你用Gradle,要确保用的是
implementation而不是compileOnly或testImplementation:implementation 'com.google.guava:guava:32.1.3-jre'清理并重新构建项目
旧的构建缓存可能会导致依赖没有正确打包,执行以下命令彻底清理后重新构建:- Maven:
mvn clean package - Gradle(Linux/Mac):
./gradlew clean build - Gradle(Windows):
gradlew clean build
- Maven:
确认Spring Boot打包插件配置
必须使用Spring Boot官方的打包插件,它会把所有依赖打包到Jar的BOOT-INF/lib目录下,确保你的Maven构建配置里包含这个插件:<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>如果用Gradle,要确保应用了Spring Boot插件:
plugins { id 'org.springframework.boot' version '3.2.0' id 'io.spring.dependency-management' version '1.1.4' id 'java' }验证Jar包内是否包含Guava
打包完成后,检查Jar包内部是否有Guava的Jar文件:- 用解压工具打开你的项目Jar,查看
BOOT-INF/lib目录下是否存在guava-xxx.jar - 或者用命令行快速检查:
jar tf your-project.jar | grep guava,如果有输出说明依赖已包含,没有的话回到第一步重新检查依赖配置
- 用解压工具打开你的项目Jar,查看
排查依赖冲突
有些第三方依赖可能会主动排除Guava,导致依赖缺失。可以用以下命令查看依赖树,确认Guava的依赖状态:- Maven:
mvn dependency:tree | grep guava - Gradle:
./gradlew dependencies | grep guava
如果发现有排除项,可以在你的Guava依赖中添加排除规则,或者调整依赖的声明顺序来解决冲突。
- Maven:
内容的提问来源于stack exchange,提问作者nymvno
相关产品推荐
相关产品推荐

