【问题标题】:java.lang.NoClassDefFoundError: com/google/common/collect/ImmutableMap while using WebDriver with Maven Dependencies in Java Seleniumjava.lang.NoClassDefFoundError: com/google/common/collect/ImmutableMap 在 Java Selenium 中使用带有 Maven 依赖项的 WebDriver
【发布时间】:2018-10-14 19:07:31
【问题描述】:
  1. 它是driver=new ChromeDriver(); 行之后的代码部分,它给了我错误,我用 sysout 检查,错误在 2,我使用 Maven 的经验不是很好,但我正在检查我的 pom.xml 文件,我给了 Selenium 依赖项.

-任何建议?,任何帮助表示赞赏

public WebDriver initilizeDriver() throws IOException
{
    Properties prop= new Properties();
    FileInputStream fıs=new FileInputStream("C:\\Users\\Melih Sancak\\my-amazonTest\\src\\main\\java\\com\\ObjectRepisotary\\app\\data.properties");
    prop.load(fıs);
    String browserName =prop.getProperty("browser");
    System.out.println(browserName);
    if(browserName.equals("chrome"))
    {
        System.setProperty("webdriver.chrome.driver", "C:\\Users\\Melih Sancak\\Downloads\\chromedriver.exe");
        driver=new ChromeDriver();
    }
}

2。错误:

java.lang.NoClassDefFoundError: com/google/common/collect/ImmutableMap
    at org.openqa.selenium.remote.service.DriverService$Builder.<init>(DriverService.java:253)
    at org.openqa.selenium.chrome.ChromeDriverService$Builder.<init>(ChromeDriverService.java:94)
    at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:88)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:123)

【问题讨论】:

  • 添加你的maven pom.xml,至少依赖。
  • 实际添加了 org.seleniumhq.seleniumselenium-java3.11.0 ,它已经在我的 .pom 文件中,我的代码中也没有语法错误。
  • 你确定 browserName 等于 "chrome" 吗?请记住区分大小写。更改为“String browserName =prop.getProperty("browser").toLowerCase();”。这应该是无效的,您的代码不会返回 WebDriver。而且你不处理其他浏览器。
  • 不,不是msitake,我打印出来了,它进入了loop.driver=new ChromeDriver();这条线我认为问题发生在我之前的 syssout 线之后。它在之前但不是之后打印出来

标签: java maven selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

文件com/google/common/collect/ImmutableMap 可能已损坏:

Deploying Maven project throws java.util.zip.ZipException: invalid LOC header (bad signature)

如果您正在使用 eclipse 并想检查此文件是否已损坏,请尝试打开它。它位于 guava maven 依赖项中。如果它已损坏,它将显示invalid LOC header (bad signature)

然后找到.m2文件夹,搜索损坏的文件并将其删除。最后运行一个 Maven 更新。

这解决了我的问题。

【讨论】:

    【解决方案2】:

    这个问题的原因是guava library

    通过在 maven pom.xml 中添加 guava 库解决了这个问题

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>31.0.1-jre</version>
        </dependency>
    

    我的一个朋友也遇到了这个问题,添加这个库就可以解决这个问题,因为该方法 ImmutableMap 来自 guava

    同时粘贴错误消息,这样人们就会来到这里,因为很多人都会遇到同样的问题

    java.lang.NoSuchMethodError: com.google.common.collect.ImmutableMap.of(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/common/collect/ImmutableMap;
    
    at org.openqa.selenium.chrome.AddHasCasting.getAdditionalCommands(AddHasCasting.java:38)
    at org.openqa.selenium.chrome.ChromeDriver$ChromeDriverCommandExecutor.getExtraCommands(ChromeDriver.java:123)
    

    【讨论】:

    猜你喜欢
    • 2020-04-06
    • 1970-01-01
    • 2022-10-07
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 2020-09-12
    • 2018-01-18
    • 2018-05-26
    相关资源
    最近更新 更多