更新Jar包后运行TestNG报com.google.common.base类NoClassDefFoundError求助
问题根因
该错误为典型的Guava版本冲突问题:编译阶段类路径下的Guava版本包含目标方法,所以没有编译报错;运行时类加载器优先加载了其他版本的Guava Jar包,该版本缺失com.google.common.base.Platform.stringIsNullOrEmpty方法,最终抛出NoClassDefFoundError。
解决方案
- 排查全项目Guava依赖,排除重复冲突版本
如果你使用Maven管理依赖,执行mvn dependency:tree | grep guava命令查看所有直接/间接引入的Guava包,给非预期版本的Guava依赖添加<exclusions>配置排除冲突版本。如果你使用Gradle管理依赖,执行gradle dependencies | grep guava完成排查。 - 统一全项目Guava版本
锁定全项目Guava版本为28.2-jre及以上的稳定正式版本,避免跨版本API不兼容问题。 - 清理缓存重新构建
执行mvn clean install(Maven项目)或gradle clean build(Gradle项目),清除历史编译缓存后再运行TestNG用例,确认运行时类路径下仅存在指定的统一版本Guava Jar。 - 手动导Jar项目排查方案
如果你是手动导入Jar包的项目,直接检查项目lib目录、JDK扩展目录、运行环境类路径下是否存在多个版本的Guava Jar,删除所有冲突版本,仅保留一个统一版本即可。
内容的提问来源于stack exchange,提问作者S P
相关产品推荐
相关产品推荐

