尝试在 Selenium 4 中执行测试时出现 java.lang.NoSuchMethodError: com.google.common.collect.ImmutableMap.of(Ljava/lang/Object; ...)

问题描述 投票:0回答:2

将 Selenium 版本从 3.141.59 升级到 4.6.0 后,在尝试执行测试用例时出现以下错误。

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;

在互联网上花了一些时间后,我了解到这是由于 ImmutableMap.of() 只接受最多 10 个参数而发生的,但是在执行测试时它尝试在下面传递 12 个参数(在测试层我没有)不要在任何地方使用这样的函数,所以我认为这是由某种库使用的)。因此,我应用了以下解决方法。

  • 将番石榴版本从23.0升级到31.0.1-jre。
  • 将 guava 版本从 23.0 升级到 31.1-jre。
  • 添加
    io.github.bonigarcia
    依赖版本5.0.3。
  • 添加
    io.github.bonigarcia
    依赖版本5.1.0。

但这些都无助于解决这个问题。 然后我尝试从.m2文件夹中删除现有的ImmutableMap文件,但是.m2文件夹中没有这样的

com/google/common/collect/ImmutableMap
路径。

请注意,我不允许降级当前的 Selenium 版本,因为我正在开发公司测试框架

我目前使用的其他东西很少。

  • Chrome 版本 - 109.0.5414.120
  • Java 版本 - 1.8.0_341

请问有人可以帮我解决这个问题吗?非常感谢任何帮助!

java selenium maven selenium-webdriver nosuchmethoderror
2个回答
0
投票

这个错误信息...

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;

...意味着 com.google.common.collect.ImmutableMap.of()Lcom/google/common/collect/ImmutableMap; 引发了

NoSuchMethod
,这表明它可能已损坏,或者您专门使用的二进制文件版本与 guava version 之间存在一些不兼容。


解决方案

由于您之前使用的是 Selenium v3.141.59,因此您需要先从项目中删除所有以前的 jar,

  • 下载新的
    selenium-java-4.8.0.zip
    文件,解压 jar 并将它们一一添加到您的项目中。
  • 或者下载新的
    selenium-server-4.8.0.jar
    文件并将其添加到您的项目中。

如果您正在使用 ,您可以从系统中删除

.m2
文件夹并执行以下 Maven 命令:

>mvn build
>mvn test

0
投票

是否有解决方案可以解决此错误 java.lang.NoSuchMethodError: com.google.common.collect.ImmutableMap.of?我目前处于同样的情况,从同一版本升级到 Selenium 4.11.0 并遇到了完全相同的问题。

© www.soinside.com 2019 - 2024. All rights reserved.