【问题标题】:java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSortedSet.toImmutableSortedSet(Ljava/util/Comparator;)Ljava/util/stream/Collector;java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSortedSet.toImmutableSortedSet(Ljava/util/Comparator;)Ljava/util/stream/Collector;
【发布时间】:2019-02-21 03:07:21
【问题描述】:

我收到 Appium 安装程序无法启动应用程序的错误。我正在使用下面的配置设置:

java-client = 3.1.0
selenium-java = 3.11.0
appium-version = 1.7.0

还添加了以下依赖,但仍然面临同样的问题:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.5</version>
</dependency> 

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>18.0</version>
</dependency>

我设置的以下功能:

File app = new File(prop.getProperty("apkFilePath"));
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability("DeviceName", "Redmi Note 5");
cap.setCapability("PlatformVersion", prop.getProperty("platformVersion"));
cap.setCapability("platformName", "Android");
cap.setCapability("app", app.getAbsolutePath());
try{
    driver=new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"),cap);
}catch(Exception e){
    e.printStackTrace();
}


Error: java.lang.NoSuchMethodError: 
    com.google.common.collect.ImmutableSortedSet.toImmutableSortedSet(Ljava/util/Comparator;)Ljava/util/stream/Collector;
    at org.openqa.selenium.remote.NewSessionPayload.lambda$validate$4(NewSessionPayload.java:199)
    at java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:372)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:373)
    at java.util.Iterator.forEachRemaining(Iterator.java:116)
    at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at org.openqa.selenium.remote.NewSessionPayload.validate(NewSessionPayload.java:215)
    at org.openqa.selenium.remote.NewSessionPayload.(NewSessionPayload.java:163)
    at org.openqa.selenium.remote.NewSessionPayload.create(NewSessionPayload.java:114)

请看一下如何解决这个问题。我最近两天正在尝试,但仍然面临同样的问题。 还有其他方法可以解决此appium设置,请建议... 等待好心的回应...

【问题讨论】:

    标签: java appium appium-ios appium-android appium-desktop


    【解决方案1】:

    您的类路径中可能有 Guava 的冲突版本(即您尝试调用的方法的签名不同)。 我之前遇到过NoSuchMethodError,它实际上源于 jar 的冲突版本。 看看这个answer。 也看看这个issue

    【讨论】:

    • 一种可能性是您已经使用一个 Guava jar 编译了代码,并使用另一个版本的 jar 在部署中运行程序,当我遇到 NoSuchMethodError 错误时就是这种情况。
    【解决方案2】:

    selenium-java-3.11 需要 Guava 23.6-jre as per the pom.xml:

    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>23.6-jre</version>
      <classifier></classifier>
    </dependency>
    

    你已经降级到更旧的 Guava 版本,从 pom.xml 中删除你自己的版本,让 selenium 选择所需的版本。

    【讨论】:

    • 感谢您的回复,我已将 guava 更改为 23.6-jre,但出现错误:org.openqa.selenium.SessionNotCreatedException:无法创建新会话。详细信息:desiredCapabilities 对象无效,原因如下:“deviceName”不能为空(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:488 毫秒
    • @manishkumar 您应该打开另一个包含更多详细信息的问题。它似乎与原始问题无关。
    【解决方案3】:

    尝试使用 platformVersion 代替 PlatformVersiondeviceName 代替 DeviceName

    cap.setCapability("deviceName", "Redmi Note 5");
    cap.setCapability("platformVersion", prop.getProperty("platformVersion"));
    //or you can use
    //cap.setCapability("platformVersion", "8.1.0"); //your android os version directly
    

    如果你使用 maven 项目,你不需要使用 guava 依赖 添加 selenium-java

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多