NoClassDefFoundError:而存储库中有maven dependencie和jar



谁能向我解释异常的原因是什么:

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

最新更新