NoSuchMethodError:com.google.common.collect.ImmutableList.toImmutableList()
Posted
技术标签:
【中文标题】NoSuchMethodError:com.google.common.collect.ImmutableList.toImmutableList()【英文标题】:NoSuchMethodError: com.google.common.collect.ImmutableList.toImmutableList() 【发布时间】:2018-08-01 12:14:15 【问题描述】:我不断收到上述错误(全文如下)guava-23.6-jre.jar
我用 IntelliJ IDEA 做所有事情,所以我的项目中没有 pom.xml。
我的代码没有什么特别之处,第 39 行是setProperty()
调用:
@Before
public void Setup()
System.setProperty("webdriver.chrome.driver", "/Users/xxxxx/Documents/Java/end2endtests/chromedriver");
_driver = new ChromeDriver();
_helper = new WebDriverHelper(_driver);
_wait = new WebDriverWait(_driver, Constants.SPIN_WAIT_TIMEOUT);
错误是
java.lang.NoSuchMethodError: com.google.common.collect.ImmutableList.toImmutableList()Ljava/util/stream/Collector;
at org.openqa.selenium.chrome.ChromeOptions.asMap(ChromeOptions.java:306)
at org.openqa.selenium.remote.NewSessionPayload.create(NewSessionPayload.java:107)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:67)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:138)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:219)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:142)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:181)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:168)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:123)
at PlaylistTest.Setup(PlaylistTest.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
这是我已安装的软件包列表:
animal-sniffer-annotations-1.14.jar jackson-databind-2.8.9.jar
bcpkix-jdk15on-1.58.jar jcl-over-slf4j-1.7.25.jar
bcprov-jdk15on-1.58.jar jsr305-1.3.9.jar
browsermob-core-2.1.5.jar junit-4.12.jar
byte-buddy-1.7.9.jar jzlib-1.1.3.jar
checker-compat-qual-2.0.0.jar littleproxy-1.1.0-beta-bmp-17.jar
commons-codec-1.10.jar mitm-2.1.5.jar
commons-exec-1.3.jar netty-all-4.0.51.Final.jar
commons-lang3-3.5.jar okhttp-3.9.1.jar
commons-logging-1.2.jar okio-1.13.0.jar
dnsjava-2.1.8.jar selenium-api-3.9.1.jar
error_prone_annotations-2.0.18.jar selenium-chrome-driver-3.9.1.jar
error_prone_annotations-2.1.3.jar selenium-edge-driver-3.9.1.jar
gson-2.8.2.jar selenium-firefox-driver-3.9.1.jar
guava-23.0-android.jar selenium-ie-driver-3.9.1.jar
guava-23.6-jre.jar selenium-java-3.9.1.jar
hamcrest-core-1.3.jar selenium-opera-driver-3.9.1.jar
httpclient-4.5.3.jar selenium-remote-driver-3.9.1.jar
httpcore-4.4.6.jar selenium-safari-driver-3.9.1.jar
j2objc-annotations-1.1.jar selenium-server-standalone-3.9.1.jar
jackson-annotations-2.8.9.jar selenium-support-3.9.1.jar
jackson-core-2.8.9.jar slf4j-api-1.7.25.jar
【问题讨论】:
你能在这里发布更多代码吗?你在这一行有什么PlaylistTest.Setup(PlaylistTest.java:39)
。此外,您使用的库列表也会有所帮助,因为看起来库版本冲突。
感谢@SergeiSirik,我已经添加了 lib 目录列表和我的代码。
尝试消除两个番石榴依赖项之一。你应该只指定一个。
@MikeJRamsey56 不,它们是不同的。 Android 来自我需要的 browsermob。但是问题很可能是由selenium-server-standalone-3.9.1.jar
引起的
适合自己。但是你应该避免多个版本的 Guava 之间的冲突。
【参考方案1】:
使用我安装的任何默认版本的 selenium lib 我都遇到了同样的问题。显式定义依赖解决了它:
【讨论】:
【参考方案2】:除非您知道如何在 IDE 中消除番石榴冲突,否则请勿从 AndroidStudio 运行 RemoteWebDriver selenium 测试。在我的 gradle 文件中清理 guava 依赖项后,如下所示:
testImplementation "com.google.guava:guava:28.2-jre" testImplementation ('org.seleniumhq.selenium:selenium-chrome-driver:4.0.0-alpha-4') 排除组:“com.google.guava”,模块:“guava”
我从 IntelliJ 社区版执行了我的测试,并且它们有效!!。看来Android Studio强制自己版本的番石榴
【讨论】:
我遇到了同样的问题,你的修复对我有用,谢谢!【参考方案3】:当我的 testng 版本从 7.1 更新到 7.3 时,我遇到了同样的问题,而 selenium 在 3.141.59 上。
恢复 testng 版本或更新 selenium 应该可以解决问题
【讨论】:
【参考方案4】:当我的 testng 版本从 7.0.0 更新到 7.3 时,我遇到了同样的问题,而 selenium 在 3.141.59 上。 “项目是 Maven”并且问题已解决(Chrome 浏览器已启动)
【讨论】:
【参考方案5】:我在使用 TestNG 7.4.0 时遇到了同样的问题,并通过指定解决了它:
implementation 'com.google.guava:guava:30.1.1-jre'
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。【参考方案6】:我通过删除外部 JARS 解决了我的问题:
【讨论】:
【参考方案7】:只需在您的 Pom.xml 文件中添加一个依赖项,问题就会解决
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>24.0-jre</version>
</dependency>
【讨论】:
以上是关于NoSuchMethodError:com.google.common.collect.ImmutableList.toImmutableList()的主要内容,如果未能解决你的问题,请参考以下文章
NoSuchMethodError(NoSuchMethodError:方法'[]'在null上被调用。接收者:null尝试调用:[](“title”))