1、報錯信息
在使用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
2、問題排查
在網上查詢以後,發現問題可能有兩種:
1. 沒有設置chrome driver的位置
//設置drver位置的方法。
System.setProperty(「webdriver.chrome.driver」, 「/Users/supinrong/code/driver/chromedriver」);
2. guava包依賴衝突
排除掉第一種可能後,只能再查看第二種了。
3、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’ }