Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

java.lang.NoClassDefFoundError: com/google/common/collect/ImmutableMap while using WebDriver with Maven Dependencies in Java Selenium

  1. It is portion the code after driver=new ChromeDriver(); line it give me error i check with sysout, errors are in the 2, well i am not well experienced using Maven but i am checking my pom.xml file , i gave Selenium dependencies.

-Any advice?, any helps appreciated

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. Error:

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)
like image 902
Melih Sancak Avatar asked Jun 20 '26 08:06

Melih Sancak


2 Answers

The reason for this problem is guava library.

This problem got solved by adding the guava library in maven pom.xml

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

One of my friend was also facing this issue and adding this library took care of it as that method ImmutableMap comes from guava

Pasting the error message as well so people will land here as many will have same problem

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)
like image 84
Gaurav Khurana Avatar answered Jun 21 '26 22:06

Gaurav Khurana


The file com/google/common/collect/ImmutableMap might be corrupted:

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

If you are using eclipse and want to check whether this file is corrupted just try to open it. It is located in the guava maven dependency. If it is corrupted it will show you invalid LOC header (bad signature).

Then locate the locate the .m2 folder, search for the corrupted file and delete it. Finally run a maven update.

That solved the problem for me.

like image 33
Hendrik Avatar answered Jun 21 '26 22:06

Hendrik



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!