【问题标题】:Why is my IDE looking in the wrong dependency folder for a needed class?为什么我的 IDE 在错误的依赖文件夹中查找所需的类?
【发布时间】:2020-05-18 06:06:18
【问题描述】:

我正在尝试运行一个在我更改主文件夹之前运行良好的脚本。 更改主文件夹后,我遇到了一些问题,但我能够解决它们。我唯一无法解决的是以下错误。

    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/远程/内部 其中只有 WebElementToJsonConverter 类

我已经尝试通过 maven 以几种不同的方式重新安装库,使用不同的依赖项等,但无法解决此问题。

我以前从未遇到过这样的问题,所以我很高兴看到解决方案会是什么。

注意事项: 由于以下代码行而引发错误

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

这个项目之前工作得很好,但我一更改项目目录就停止工作了。

【问题讨论】:

  • 你正在使用 maven 或普通 java 项目
  • Maven @Muzzamil
  • 这个问题与类路径有关,因为您更改了目录。您在类路径中设置上述硒罐的驾驶室?勾选此处设置类路径docs.oracle.com/javase/7/docs/technotes/tools/windows/…,应该添加到target/classes
  • 另一种方法是删除 selenium 依赖项,因为 appium java-client 已经带有 selenium 依赖项。它可以解决您的问题。
  • @Muzzamil 我删除了所有 selenium 依赖项,它解决了这个问题。谢谢你。您能否将其作为答案提交,并以更详细的方式提交类路径解决方案?

标签: java android selenium appium


【解决方案1】:

发生这种情况是因为您拥有具有 2 个依赖项的相同类或库。只需删除基于selenium 的依赖项即可解决问题,因为所有selenium dependencies 都已附带Appium java client。对于classpath,您可以查看java docs

那么通过cmd设置类路径的方式(导航到项目根文件夹)

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

注意:对于maven project,所有已编译的java 文件都应该在target 文件夹中。如果您遇到同样的问题,您可以在classpath 中添加缺少的类,目的地应该是 target 文件夹,如 java 文档中所述

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-16
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多