线程“主”中的异常java.lang.NoSuchMethodError:com.google.common.base.Preconditions.checkState(ZLjava / lang / String; Ljava / lang / Object;)

时间:2018-08-25 04:30:15

标签: java selenium selenium-webdriver webdriver guava

我开发了硒代码:

    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.edge.EdgeDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.support.ui.Select;
    import java.util.List;

    public class TestDemoQA {
        public static void main(String[] args) throws InterruptedException{
            System.setProperty("webdriver.edge.driver", "C:\\Users\\Suganthan\\Downloads\\MicrosoftWebDriver.exe");
            WebDriver driver = new EdgeDriver();
            driver.get("http://demoqa.com/");
            driver.manage().window().maximize();`

我收到的错误是:

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;)

我正在尝试通过升级番石榴21.0根据This Solution解决此问题。但我仍然收到此错误。有人可以提供解决方案吗?

4 个答案:

答案 0 :(得分:2)

最后,我找到了解决方案。这是简单的家伙。在您的项目中添加最新的番石榴罐。注意:如果您已经有一个旧的罐子(请删除并添加新的罐子)。跟随链接:mvnrepository.com/artifact/com.google.guava/guava/29.0-jre

答案 1 :(得分:1)

此错误消息...

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;)

...表示 JVM 无法启动/生成程序。

@GhostCat指出,您的主要问题是 guava 版本与您使用的其他二进制版本之间的不兼容性

解决方案

  • JDK 升级到最新级别JDK 8u181
  • 升级到当前水平Version 3.14.0
  • 当您删除以前版本的 Selenium Client 时,请确保正确删除了所有关联的 jars
  • 通过您的 IDE
  • 清理您的项目工作区重建您的项目,并且仅具有必需的依赖项。
  • 执行您的@Test

答案 2 :(得分:1)

请注意,您要从罐子列表中删除旧的番石榴,然后再用新的番石榴替换

答案 3 :(得分:0)

我有点明白这是什么了。所以我使用 TestNG 添加到我的项目类路径中。

当我传统上保留如下所示的 Selenium Jars 时,它抛出了问题中所述的错误。

Selenium Jars

现在,如果您在将 selenium jars 更新到最新版本后仍然收到错误消息,那么这就是 TestNG jars 内部的问题。如果您仔细导航到 testng jars 文件夹,您会看到 guava 已经存在(在大多数情况下有一些过时的版本)。只需删除那个。

就我而言,我的 selenium jars 文件夹(版本 30 或其他版本)中有最新的 guava jar,但在我的 TestNG 文件夹中,我有大约 19 个版本的 guava jar——从而给 jvm 造成了混乱。

简而言之,在下载了更新的 jar 但仍然出现此类错误的情况下,这主要是某种模棱两可的情况。

相关问题