Почему моя IDE ищет в неправильной папке зависимостей нужный класс? - PullRequest
0 голосов
/ 02 февраля 2020

Я пытаюсь запустить скрипт, который работал нормально, пока я не изменил домашнюю папку. Как только я изменил домашнюю папку, я столкнулся с несколькими проблемами, но я был в состоянии решить их. Единственное, что мне не удалось устранить, - это следующая ошибка:

    Exception in thread "main" java.lang.NoClassDefFoundError: org/openqa/selenium/remote/internal/JsonToWebElementConverter
    at BrowserStackAndroid.main(BrowserStackAndroid.java:43)
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.remote.internal.JsonToWebElementConverter
    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)
    ... 1 more

Это интересная ошибка, которую после некоторых исследований я не смог обернуть.

Класс, который он ищет, находится в зависимости org.selenium.remote. За исключением того, что это не во внутренней папке, а в удаленной папке. Так что класс, который он ищет, это JsonToWebElementConverter.

Этот класс находится по следующему пути org / openqa / selenium / remote / JsonToWebElementConverter

Папка, в которой IDE (или Maven?) изучает org / openqa / selenium / remote / internal, который имеет только класс WebElementToJsonConverter

Я пытался переустановить библиотеку через maven несколькими различными способами, используя разные зависимости, и т. д. c но hasn ' Я не смог решить эту проблему.

Я никогда раньше не сталкивался с подобной проблемой, поэтому очень рад узнать, каким будет решение.

Примечания: возникает ошибка из-за следующей строки кода

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

Раньше этот проект работал отлично, но как только я изменил каталог, проект перестал работать.

1 Ответ

1 голос
/ 02 февраля 2020

Это происходит, когда у вас есть тот же класс или библиотека с двумя зависимостями. Простое удаление зависимостей на основе selenium решит проблему, поскольку все selenium dependencies уже поставляются с Appium java client. Для classpath вы можете проверить на java документы

Таким образом, способ установить путь к классу с помощью cmd (Перейти к папке проекта root)

set CLASSPATH= target/org/openqa/selenium/remote/internal/JsonToWebElementConverter

Примечание: для maven project все скомпилированные файлы java должны находиться в папке target. Если вы столкнулись с той же проблемой, вы можете добавить отсутствующий класс в classpath место назначения должно быть в папке target, как описано в java docs

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