web-dev-qa-db-ja.com

java.lang.NoSuchMethodError:com.google.common.base.Preconditions.checkState(ZLjava / lang / String;)with Selenium、gradle、ChromeDriver

GradleでSelenium APIを使用しようとしています。これは私のbuild.gradle依存関係セクションです:

dependencies {
    compile 'com.google.api-client:google-api-client:1.23.0'
    compile 'com.google.oauth-client:google-oauth-client-jetty:1.23.0'
    compile 'com.google.apis:google-api-services-sheets:v4-rev506-1.23.0'
    compile group: 'org.seleniumhq.Selenium', name: 'Selenium-Java', version:        '2.9.0'
    compile group: 'org.seleniumhq.Selenium', name: 'Selenium-chrome-driver', version: '2.9.0' }

私のセレン-Javaコード:

System.setProperty("webdriver.chrome.driver", "C:\\Program Files(x86)\\Google\\Chrome\\Application\\chrome.exe");
WebDriver driver = new ChromeDriver();

コードは正常に動作し、Chromeブラウザを開くことができます。ただし、build.gradleでは、2.9.0バージョンのSeleniumとchromedriverを使用しています。 2.9.0の場合、WebDriver driver = new ChromeDriver();メソッドで以下のエラーが発生します。

Exception in thread "main" Java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
        at org.openqa.Selenium.remote.service.DriverService.findExecutable(DriverService.Java:124)
        at org.openqa.Selenium.chrome.ChromeDriverService.access$000(ChromeDriverService.Java:32)
        at org.openqa.Selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.Java:137)
        at org.openqa.Selenium.remote.service.DriverService$Builder.build(DriverService.Java:339)
        at org.openqa.Selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.Java:88)
        at org.openqa.Selenium.chrome.ChromeDriver.<init>(ChromeDriver.Java:123)
        at Quickstart.main(Quickstart.Java:130)

Gradle + Maven + Selenium対応バージョンを探してみました。良い情報を見つけることができませんでした。何か案が?

4
Swati Thorve

Guavaを更新してみてください

<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>27.1-jre</version>
</dependency>

それはあなたの問題を解決します。

3
Reza

このエラーメッセージ...

_Exception in thread "main" Java.lang.NoSuchMethodError:
com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
_

...Java ClientChromeDriver()を見つけられなかったことを意味します。

問題と解決策

共有したSelenium-Java codeに従って、System.setProperty()行を使用してChromeDriverバイナリパスchromeバイナリパスではありません)。そのためには、 ChromeDriver-WebDriver for Chrome からChromeDriverバイナリをダウンロードして配置する必要がありますシステムで、ChromeDriverからSystem.setProperty()行までの絶対パスを記述します。したがって、次のように変更する必要があります。

_System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");
WebDriver driver = new ChromeDriver();
_

へ:

_System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
_
2
DebanjanB

私はまったく同じ問題を抱えています(私はMavenを使用しています)。

問題はcom.google.api-clientcom.google.oauth-clientcom.google.apis:google-api-services-sheetsのいずれかをorg.seleniumhq.Seleniumと一緒に使用するとエラーが発生することであることに気付きました。

問題は、両方の依存関係が異なるcom.google.guava:guavaアーティファクトに依存していることです。

エラーを解決するには、単一のcom.google.guava:guavaアーティファクトに明示的に依存する必要があります。だから、あなたのbuild.gradleに以下を追加してください:

compile 'com.google.guava:guava:27.0.1-jre'

1
Paul Isaris

私のように他の誰かがGoogleからこれにアクセスした場合に備えて、ここに投稿したかっただけです。何らかの理由で、Sudoで実行する必要がありました。 npmの使用に問題がありましたSelenium-standaloneパッケージと実行:

/node_modules/Selenium-standalone/bin/Selenium-standalone start

そして、それはそのエラーを示します。 Sudoで実行していた問題を修正したもの

Sudo /node_modules/Selenium-standalone/bin/Selenium-standalone start

以前はこれを行う必要があったとは思いませんが、突然、それが現在動作する唯一の方法になります。

0
kamranicus

私は同じ問題を抱えており、依存関係チェックを実行したところ、競合があることがわかりました。私にとってうまくいった解決策は、競合する依存関係を除外することでした。

あなたのプロジェクトはおそらく私のものとは異なる依存関係を持つでしょう。そのため、私のプロジェクトの特定の競合を一覧表示しても役に立たない場合があります。

0

以下の依存関係をコピーしてpom.xmlに貼り付け、Mavenビルドを実行します。

 <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>

      <!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.1.0</version>
    <scope>test</scope>
</dependency>

    <!-- https://mvnrepository.com/artifact/io.rest-assured/rest-assured -->
<dependency>
    <groupId>io.rest-assured</groupId>
    <artifactId>rest-assured</artifactId>
    <version>3.0.0</version>
    <scope>test</scope>
</dependency>

    <!-- https://mvnrepository.com/artifact/io.rest-assured/json-path -->
<dependency>
    <groupId>io.rest-assured</groupId>
    <artifactId>json-path</artifactId>
    <version>3.0.0</version>
</dependency>

    <!-- https://mvnrepository.com/artifact/io.rest-assured/json-schema-validator -->
<dependency>
    <groupId>io.rest-assured</groupId>
    <artifactId>json-schema-validator</artifactId>
    <version>3.0.0</version>
</dependency>

<!-- https://mvnrepository.com/artifact/io.rest-assured/xml-path -->
<dependency>
    <groupId>io.rest-assured</groupId>
    <artifactId>xml-path</artifactId>
    <version>3.0.0</version>
</dependency>

    <!-- https://mvnrepository.com/artifact/org.hamcrest/Java-hamcrest -->
<dependency>
    <groupId>org.hamcrest</groupId>
    <artifactId>Java-hamcrest</artifactId>
    <version>2.0.0.0</version>
    <scope>test</scope>
</dependency>


    <!-- cucumber dependency begins -->


    <!-- https://mvnrepository.com/artifact/net.masterthought/cucumber-reporting -->
    <dependency>
    <groupId>net.masterthought</groupId>
    <artifactId>cucumber-reporting</artifactId>
    <version>4.7.0</version>
    </dependency>

    <!-- starts here -->
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-core</artifactId>
        <version>1.2.5</version>
    </dependency>

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-Java</artifactId>
        <version>1.2.5</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-jvm</artifactId>
        <version>1.2.5</version>
        <type>pom</type>
    </dependency>

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>1.2.5</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-jvm-deps</artifactId>
        <version>1.0.5</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/info.cukes/cucumber-html -->
<dependency>
    <groupId>info.cukes</groupId>
    <artifactId>cucumber-html</artifactId>
    <version>0.2.3</version>
</dependency>

<!-- https://mvnrepository.com/artifact/info.cukes/gherkin -->
<dependency>
    <groupId>info.cukes</groupId>
    <artifactId>gherkin</artifactId>
    <version>2.12.2</version>
    <scope>provided</scope>
</dependency>


<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-testng -->
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-testng</artifactId>
    <version>5.4.2</version>
</dependency>

<!-- https://mvnrepository.com/artifact/com.theoryinpractise/cucumber-testng-factory -->
<dependency>
    <groupId>com.theoryinpractise</groupId>
    <artifactId>cucumber-testng-factory</artifactId>
    <version>1.0.1</version>
</dependency>
<!--   https://stackoverflow.com/questions/49021707/Java-lang-nosuchmethoderror-com-google-common-base-preconditions-checkstatezlj?rq=1  -->
<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>27.1-jre</version>
</dependency>

  </dependencies>
0
Nadia Sawda