谁能向我解释异常的原因是什么:
java.lang.NoClassDefFoundError: org/openqa/selenium/interactions/HasInputDevices
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
...
当我尝试使用rg.seleniumhq.selenium
硒支持库时,它就会发生,我在 POM 中对其进行了描述.XML
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-support</artifactId>
<version>2.33.0</version>
<scope>compile</scope>
</dependency>
并且 jar 显示在外部库中,有什么建议吗?
您有依赖冲突,selenium-support
因为它已经依赖于selenium-api
(请参阅selenium-support-2.33.0.pom
(,但是在您的依赖树中的某个地方有一个冲突的版本selenium-api
正在使用。
阅读 Apache Maven 依赖插件 – 使用依赖树解决冲突。
然后为您的 Maven 模块运行 mvn dependency:tree -Dverbose -Dincludes=selenium-api
以查找冲突。
另请参阅有关堆栈溢出的以下问题的答案:
- "HasInputDevices"位于"/org/openqa/selenium/
- interactions",但它仍在查看"/org/openqa/selenium/">
- Java maven 项目中的库版本冲突
您将需要解决依赖关系冲突。一种方法是使用 Jens' 的答案并显式声明对所需版本的依赖关系,但冲突仍然存在,并且您可能还有其他您还不知道的冲突。我建议将依赖关系收敛与 Maven Enforcer 插件一起使用,如此处所述,以检测现有冲突并避免将来引入更多冲突。
该类是selenium-api.jar
的一部分。 也将其添加到您的 POM 中。
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-api</artifactId>
<version>2.33.0</version>
</dependency>
此 jar 包含类org/openqa/selenium/interactions/HasInputDevices