ApacheHttpClient $ Factory выбросит исключение java .lang.NoClassDefFoundError - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь запустить пример теста через Appium на BrowserStack. Весь код взят из BrowserStack и использует их пример файла .ipa. Ниже приведен журнал ошибок, которые я получаю.

Exception in thread "main" java.lang.NoClassDefFoundError: org/openqa/selenium/remote/internal/ApacheHttpClient$Factory
at io.appium.java_client.remote.AppiumCommandExecutor.<init>(AppiumCommandExecutor.java:55)
at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:131)
at io.appium.java_client.ios.IOSDriver.<init>(IOSDriver.java:82)
at BrowserStackIOS.main(BrowserStackIOS.java:28)
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.remote.internal.ApacheHttpClient$Factory
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 4 more

Вот строка кода, на которую ссылается строка 28

IOSDriver<IOSElement> driver = new IOSDriver<IOSElement>(new URL("http://"+userName+":"+accessKey+"@hub-cloud.browserstack.com/wd/hub"), caps);

Кроме того, я использую maven. Я получил свои зависимости от https://search.maven.org/search?q=g: io.appium% 20AND% 20a: java -клиент

Привязки (для java) от https://selenium.dev/downloads/

Что касается Bindngs, я не уверен, правильно ли я их установил. Я извлек zip-файл и добавил файлы .jar, расположенные в папке libs, в мои зависимости. Это снимок экрана https://prnt.sc/qoqwzf Это снимок экрана селеной / удаленной / внутренней папки https://prnt.sc/qoqxh8

Примечания: никогда раньше не использовал maven, поэтому я просто включить дополнительные примечания: я получаю успешную сборку при запуске mvn install -U Я получаю эту ошибку только при попытке собрать свой проект.

Что я сделал, чтобы попытаться устранить ошибку: я обновил все зависимости селена до 4.0.0-alpha-4, используя https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java/4.0.0-alpha-4

I попытался отредактировать мой pom. xml с помощью: Добавление зависимости веб-драйвера

 <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-remote-driver</artifactId>
            <version>4.0.0-alpha-4</version>
        </dependency>

Добавление зависимости веб-драйвера Safari

       <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-safari-driver</artifactId>
            <version>4.0.0-alpha-4</version>
        </dependency>

Дополнительные примечания: Мой POM. xml выглядит точно как в https://search.maven.org/remotecontent?filepath=io / appium / java -client / 7.3.0 / java -client-7.3.0.pom с несколькими дополнительными зависимостями, которые я отметил выше .

Ниже приведены запросы на импорт, которые я запрашиваю в своем основном классе

import java.net.URL;
import java.util.List;
import java.net.MalformedURLException;

import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.ExpectedConditions;

import io.appium.java_client.MobileBy;
import io.appium.java_client.ios.IOSDriver;
import io.appium.java_client.ios.IOSElement;

. Я также отредактировал исходный код компилятора maven на 7 в соответствии с полученной ошибкой, запрашивая, что я делаю поэтому из-за несовместимости источника 5 компилятора с тем, что я выполнял.

<properties>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
    </properties>

Ниже приводится начало моего pom, которое я редактировал, не уверенный, может ли это быть проблемой или нет, но я решил, что кто-то еще бы знать.

<modelVersion>4.0.0</modelVersion>
    <groupId>-</groupId>
    <artifactId>First</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>java-client</name>
    <description>Java client for Appium Mobile Webdriver</description>
    <url>http://appium.io</url>

Если потребуется какая-либо дополнительная информация, пожалуйста, дайте мне знать. В настоящее время я нахожусь в процессе настройки своей среды, поэтому возникли различные ошибки, которые были исправлены. Это единственное, что я не смог по-настоящему обдумать.

Редактировать: Моя зависимость Appium равна

 <dependency>
            <groupId>io.appium</groupId>
            <artifactId>java-client</artifactId>
            <version>4.1.2</version>
        </dependency>

Все мои текущие зависимости

<dependencies>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>4.0.0-alpha-4</version>
        <scope>compile</scope>
        <exclusions>
            <exclusion>
                <artifactId>*</artifactId>
                <groupId>com.google.code.gson</groupId>
            </exclusion>
            <exclusion>
                <artifactId>htmlunit-driver</artifactId>
                <groupId>*</groupId>
            </exclusion>
            <exclusion>
                <artifactId>*</artifactId>
                <groupId>net.sourceforge.htmlunit</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-support</artifactId>
        <version>4.0.0-alpha-4</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-api</artifactId>
        <version>4.0.0-alpha-4</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-safari-driver</artifactId>
        <version>4.0.0-alpha-4</version>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-remote-driver</artifactId>
        <version>4.0.0-alpha-4</version>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.5</version>
        <scope>compile</scope>
    </dependency>

Удалено

org. apache .httpcomponents httpclient 4.5.9 compile Удалено

    <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib</artifactId>
        <version>3.2.12</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>commons-validator</groupId>
        <artifactId>commons-validator</artifactId>
        <version>1.6</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.9</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.6</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.1.8.RELEASE</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.9.4</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.26</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>io.appium</groupId>
        <artifactId>java-client</artifactId>
        <version>4.1.2</version>
    </dependency>
    <!-- Thanks for using https://jar-download.com -->
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.10</version>
    </dependency>
</dependencies>

1 Ответ

0 голосов
/ 17 января 2020

Root причина этой проблемы Jar Hell

Зависимости для селена 4.0.0-alpha-4 зависят от Appium Java Клиент 7.1.0.

Вы получаете ошибки из-за конфликта между зависимостями, которые вы объявили в файле pom. xml, и транзитивными зависимостями клиента Appium Java. Если вы измените Appium Java Клиент 4.1.2 на Appium Java Клиент 7.1.0 , то проблема будет решена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...