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’
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM