Java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSortedSet.toImmutableSortedSet (Ljava / util / Comparator;) Ljava / util / stream / Collector;

Я получаю сообщение об ошибке, когда установка 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, любезно предлагаю ... Жду доброго ответа ...

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
4 365
3

Ответы 3

У вас могут быть конфликтующие версии Guava в вашем пути к классам (т.е. сигнатуры метода, который вы пытаетесь вызвать, разные). Я ранее сталкивался с NoSuchMethodError, и на самом деле это происходит из-за конфликтующих версий jar-файлов. Взгляните на этот отвечать. Также взгляните на этот проблема

Одна из возможностей заключается в том, что вы скомпилировали код с одним jar-файлом Guava и запустили программу в развертывании с другой версией jar-файла, что было в случае, когда я столкнулся с ошибкой NoSuchMethodError.

Sharafat Ahmed Sabir 17.09.2018 10:33

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 и позволили селену выбрать нужную версию.

спасибо за ответ. Я изменил guava на 23.6-jre, но получаю сообщение об ошибке: org.openqa.selenium.SessionNotCreatedException: не удалось создать новый сеанс. Подробности: объект requiredCapabilities недействителен по следующей причине: 'deviceName' не может быть пустым (ПРЕДУПРЕЖДЕНИЕ: сервер не предоставил никакой информации о трассировке стека) Длительность или тайм-аут команды: 488 миллисекунд

manish kumar 17.09.2018 12:00

@manishkumar, вам следует открыть еще один вопрос с более подробной информацией. Похоже, это не связано с исходной проблемой.

Karol Dowbecki 17.09.2018 12:11

попробуйте использовать platformVersion вместо ПлатформаВерсия и имя устройства вместо Имя устройства.

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

you don't need to use guava dependency if you are using maven project to add selenium-java

Другие вопросы по теме