将 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 个参数(在测试层我没有)不要在任何地方使用这样的函数,所以我认为这是由某种库使用的)。因此,我应用了以下解决方法。
io.github.bonigarcia
依赖版本5.0.3。io.github.bonigarcia
依赖版本5.1.0。但这些都无助于解决这个问题。 然后我尝试从.m2文件夹中删除现有的ImmutableMap文件,但是.m2文件夹中没有这样的
com/google/common/collect/ImmutableMap
路径。
请注意,我不允许降级当前的 Selenium 版本,因为我正在开发公司测试框架
我目前使用的其他东西很少。
请问有人可以帮我解决这个问题吗?非常感谢任何帮助!
这个错误信息...
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
文件并将其添加到您的项目中。如果您正在使用 maven,您可以从系统中删除
.m2
文件夹并执行以下 Maven 命令:
>mvn build
>mvn test
是否有解决方案可以解决此错误 java.lang.NoSuchMethodError: com.google.common.collect.ImmutableMap.of?我目前处于同样的情况,从同一版本升级到 Selenium 4.11.0 并遇到了完全相同的问题。