集成Report Portal时Appium抛出NoSuchMethodError异常求助
解决方案:Guava版本冲突导致的NoSuchMethodError
这个异常是Guava版本冲突引发的:ImmutableList.toImmutableList()是Guava 21及以上版本才新增的方法,而你的项目中存在低版本Guava依赖,导致Appium Java Client调用该方法时找不到对应实现。
以下是具体解决步骤:
第一步:排查依赖树,定位冲突源
用构建工具命令查看项目依赖树,找出引入低版本Guava的依赖:- Maven:执行
mvn dependency:tree - Gradle:执行
./gradlew dependencies
在输出结果里搜索com.google.guava:guava,定位携带低版本(如20.x及以下)的依赖项。
- Maven:执行
第二步:强制统一Guava版本
在项目的依赖管理中指定一个兼容的高版本Guava(建议28.1-jre或更高,需和你使用的Appium版本匹配):- Maven(在pom.xml的
<dependencyManagement>中添加):<dependencyManagement> <dependencies> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>28.1-jre</version> </dependency> </dependencies> </dependencyManagement> - Gradle(在build.gradle中添加):
configurations.all { resolutionStrategy.force 'com.google.guava:guava:28.1-jre' }
- Maven(在pom.xml的
第三步:排除冲突依赖(可选)
如果强制版本后仍有问题,找到引入低版本Guava的依赖(比如Report Portal的子依赖),直接排除它的Guava依赖:<dependency> <groupId>com.epam.reportportal</groupId> <artifactId>reportportal-testng</artifactId> <version>你的Report Portal版本</version> <exclusions> <exclusion> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> </exclusion> </exclusions> </dependency>第四步:验证兼容性
确保Appium Java Client版本和指定的Guava版本兼容,比如Appium 7.x系列推荐搭配Guava 26+,可参考Appium官方文档确认对应版本要求。
内容的提问来源于stack exchange,提问作者Suraj
相关产品推荐
相关产品推荐

