代码之家  ›  专栏  ›  技术社区  ›  NarendraR TheSociety

线程“main”java中出现异常。lang.NoClassDefFoundError:org/mockito/mockito

  •  3
  • NarendraR TheSociety  · 技术社区  · 7 年前

    我是个新手 Mockito 试图从 Here , 我所做的所有配置(使用Win-10)都在教程中提到。

    在环境变量中设置:

    enter image description here

    Mockito版本:

    <!-- https://mvnrepository.com/artifact/org.mockito/mockito-all -->
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>2.0.2-beta</version>
        <scope>test</scope>
    </dependency>
    

    我从同一篇文章中提到的例子开始。但是,当我运行测试我的类时,它显示了以下异常:

    Exception in thread "main" java.lang.NoClassDefFoundError: org/mockito/Mockito
      at com.mockitotest.PortfolioTester.setUp(PortfolioTester.java:23)
      at com.mockitotest.PortfolioTester.main(PortfolioTester.java:14)
    Caused by: java.lang.ClassNotFoundException: org.mockito.Mockito
      at java.net.URLClassLoader.findClass(Unknown Source)
      at java.lang.ClassLoader.loadClass(Unknown Source)
      at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
      at java.lang.ClassLoader.loadClass(Unknown Source)
      ... 2 more
    

    我不知道这里出了什么问题。有人能帮我吗?

    2 回复  |  直到 7 年前
        1
  •  6
  •   Ahmad Shahwan    7 年前

    范围 test 指示依赖项(二进制文件)仅使用maven的测试阶段。不过,它们并没有随最终目标jar一起交付。因此,如果您自己运行测试(而不是让maven来做),最好保留默认的运行时范围,如下所示:

    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>2.0.2-beta</version>
    </dependency>
    
        2
  •  0
  •   rogerdpack    3 年前

    值得注意的是,我是在以下情况下得到的。

    A依赖于B。B对Mockito有“编译”依赖,并在其“正常源代码”中使用Mockito。

    A依赖于B和Mockito。

    然后同样的信息“NoClassDefFound org.mockito.mockito”。

    打开B的pom的“对Mockito的依赖”是从父级继承的“测试”。显然,这种“更多的本地依赖性”覆盖了另一种。

    这使得将Mockito作为非测试依赖项共享成为问题。除非它总是且仅用于单元测试,否则它将可用。