为什么我的 IDE 在错误的依赖文件夹中查找所需的 class?
Why is my IDE looking in the wrong dependency folder for a needed class?
我正在尝试 运行 一个在我更改主文件夹之前工作正常的脚本。
更改主文件夹后,我 运行 出现了一些问题,但我能够解决它们。我唯一无法解决的是以下错误。
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
这是一个有趣的错误,经过一些研究后,我无法全神贯注。
它正在搜索的 class 在 org.selenium.remote 依赖项中。除了它不在内部文件夹中,而是在远程文件夹中。
所以它正在搜索的 class 是 JsonToWebElementConverter.
这个class位于以下路径
org/openqa/selenium/remote/JsonToWebElementConverter
IDE(或 Maven?)正在查看的文件夹是
org/openqa/selenium/remote/internal
其中只有 class WebElementToJsonConverter
我已经尝试通过 maven 以几种不同的方式重新安装库,使用不同的依赖项等,但未能解决此问题。
我以前从未遇到过这样的问题,所以我很高兴看到解决方案。
备注:
由于以下代码行
而引发错误
AndroidDriver<AndroidElement> driver = new AndroidDriver<AndroidElement>(new URL("https://" + userName + ":" + accessKey + "@hub-cloud.browserstack.com/wd/hub"), caps);
这个项目之前工作得很好,但我一更改项目目录就停止工作了。
这是因为您有相同的 class 或具有 2 个依赖项的库。只需删除基于 selenium
的依赖项即可解决问题,因为所有 selenium dependencies
都已包含 Appium java client
。对于 classpath
,您可以在 java docs
查看
所以通过cmd设置class路径的方法(导航到项目根文件夹)
set CLASSPATH= target/org/openqa/selenium/remote/internal/JsonToWebElementConverter
注意: 对于 maven project
所有编译的 java 文件应该在 target
文件夹中。如果您遇到同样的问题,您可以在 classpath
中添加缺失的 class 目标应该是 target
文件夹,如 java 文档
中所述
我正在尝试 运行 一个在我更改主文件夹之前工作正常的脚本。 更改主文件夹后,我 运行 出现了一些问题,但我能够解决它们。我唯一无法解决的是以下错误。
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
这是一个有趣的错误,经过一些研究后,我无法全神贯注。
它正在搜索的 class 在 org.selenium.remote 依赖项中。除了它不在内部文件夹中,而是在远程文件夹中。 所以它正在搜索的 class 是 JsonToWebElementConverter.
这个class位于以下路径 org/openqa/selenium/remote/JsonToWebElementConverter
IDE(或 Maven?)正在查看的文件夹是 org/openqa/selenium/remote/internal 其中只有 class WebElementToJsonConverter
我已经尝试通过 maven 以几种不同的方式重新安装库,使用不同的依赖项等,但未能解决此问题。
我以前从未遇到过这样的问题,所以我很高兴看到解决方案。
备注: 由于以下代码行
而引发错误AndroidDriver<AndroidElement> driver = new AndroidDriver<AndroidElement>(new URL("https://" + userName + ":" + accessKey + "@hub-cloud.browserstack.com/wd/hub"), caps);
这个项目之前工作得很好,但我一更改项目目录就停止工作了。
这是因为您有相同的 class 或具有 2 个依赖项的库。只需删除基于 selenium
的依赖项即可解决问题,因为所有 selenium dependencies
都已包含 Appium java client
。对于 classpath
,您可以在 java docs
所以通过cmd设置class路径的方法(导航到项目根文件夹)
set CLASSPATH= target/org/openqa/selenium/remote/internal/JsonToWebElementConverter
注意: 对于 maven project
所有编译的 java 文件应该在 target
文件夹中。如果您遇到同样的问题,您可以在 classpath
中添加缺失的 class 目标应该是 target
文件夹,如 java 文档