5
  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)
undetected Selenium
  • 151,581
  • 34
  • 225
  • 281
Melih Sancak
  • 51
  • 1
  • 2
  • add your maven pom.xml, atleast dependencies. – Maciej Pulikowski May 04 '18 at 11:00
  • added actually org.seleniumhq.selenium selenium-java 3.11.0 ,it has already in my .pom file , there is no syntax error in my code also. – Melih Sancak May 04 '18 at 11:41
  • Are you sure that browserName equals "chrome" ?. Remember about case-sensitivity. Change to "String browserName =prop.getProperty("browser").toLowerCase();". And this should be void, your code doesn't return WebDriver. And you don't handle other browsers. – Maciej Pulikowski May 04 '18 at 11:48
  • No it is not the msitake , i printed out, it enters the loop.driver=new ChromeDriver(); this line i think the problem occur i syssout line before after then.it printed out before but not after – Melih Sancak May 04 '18 at 11:58

2 Answers2

3

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)
Gaurav Khurana
  • 2,778
  • 1
  • 22
  • 28
2

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.

Hendrik
  • 333
  • 6
  • 16