java selenium启动driver时报错java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V

一、报错信息

在使用Java selenium的时候,遇到报错,无法成功创建driver.
报错如下:
java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V

二、问题排查

在网上查询之后,发现问题可能有两种:

1. 没有设置chrome driver的位置

//设置drver位置的方法。
System.setProperty(“webdriver.chrome.driver”, “/Users/supinrong/code/driver/chromedriver”);

2. guava包依赖冲突

排除掉第一种可能后,只能再查看第二种了。

三、guava包版本依赖冲突排查

1. gradle打印依赖包

打印项目依束包的指令
./gradlew app:dependencies
./gradlew dependencies -q --configuration compile

2. 检查依赖包中所有的guava包版本

可以在依赖树中看到,有很多使用guava包的地方,但是只有一个地方使用的是guava-jdk. 因此猜测是需要排除掉这个jdk包
 
|    |         \--- com.google.guava:guava-jdk5:17.0
|    +--- org.springframework:spring-core:3.1.2.RELEASE
|    |    +--- org.springframework:spring-asm:3.1.2.RELEASE
|    |    \--- commons-logging:commons-logging:1.1.1 -> 1.2
|    +--- com.logicmonitor:propertybase:115.1.0
|    |    +--- com.santaba:logicmonitor-util:1.106.2 -> 1.115.3 (*)
|    |    +--- org.apache.commons:commons-lang3:3.4 -> 3.6
|    |    +--- com.google.guava:guava:20.0 -> 25.0-jre (*)

3. 修改项目的build.gradle文件

修改引入guava-jdk包的依赖包的依赖方式,把gauva-jdk排除在导入范围之外。
compile (“xxx:xxx:xxx”){
exclude group: ‘com.google.guava’, module:‘guava-jdk5’
}

猜你喜欢

转载自www.cnblogs.com/ximixuexi/p/10404848.html