java.lang.NoClassDefFoundError:在 Java Selenium 中将 WebDriver 与 Maven 依赖项一起使用时出现 com/google/common/collect/ImmutableMap

Mel*_*cak 7 java selenium maven selenium-chromedriver selenium-webdriver

    \n
  1. 这是代码行后的一部分, driver=new ChromeDriver();它给了我错误,我用 sysout 检查,错误在 2 中,好吧,我使用 Maven 的经验不是很好,但我正在检查我的pom.xml文件,我给出了 Selenium 依赖项。
  2. \n
\n\n

- 有什么建议吗?有任何帮助表示赞赏

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

2.错误:

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

Gau*_*ana 8

这个问题的原因是guava 库

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

    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>31.0.1-jre</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

我的一位朋友也面临这个问题,添加这个库就解决了这个问题,因为该方法ImmutableMap来自番石榴

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

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)
Run Code Online (Sandbox Code Playgroud)


Hen*_*rik 3

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

部署 Maven 项目抛出 java.util.zip.ZipException: invalid LOC header (badsignature)

如果您正在使用 eclipse 并且想检查该文件是否已损坏,只需尝试打开它即可。它位于 guava Maven 依赖项中。如果它被损坏它会告诉你invalid LOC header (bad signature)

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

这为我解决了问题。