【问题标题】:java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing in Intellijjava.lang.NoClassDefFoundError: Intellij 中的 org/hamcrest/SelfDescribing
【发布时间】:2013-07-09 18:57:51
【问题描述】:

我使用了 Intellij Idea 12 社区版。我正在尝试通过创建测试用例为我的班级创建测试用例。当我运行我的测试用例时,它说

java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:10)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:26)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:44)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:195)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:63)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    ... 25 more

我将如何在 Intellij 中运行测试用例。我将 junit4.11 jar 文件包含到我的模块中

【问题讨论】:

  • 将我的 JUNIT 4.12 更改为 4.8 效果很好。还将 jar 添加到 IDE 项目结构中的类路径中。添加后,编译您正在测试的类,然后尝试运行测试文件。我希望它会运作良好。

标签: java junit intellij-idea junit4


【解决方案1】:

您是否在类路径中包含hamcrest-core-1.3.jar 文件?如果不包含则意味着包含该 jar 并重试。

【讨论】:

    【解决方案2】:

    将 junit.jar 添加到您的项目依赖项中。 您可能还需要另外添加 hamcrest.jar。

    打开文件->项目结构,点击模块->依赖,添加junit.jar。

    【讨论】:

    • 投了赞成票,因为我需要以这种方式添加 hamcrest,但你去那里 :)
    【解决方案3】:

    如果您遇到此错误(以及其他一些线程)并且将 jar 添加到依赖项不起作用,则需要添加到通用 java 类路径。

    我在 OSX 中遇到了这个错误,maven 会下载依赖项,但在 fork 模式下找不到它。

    将所有 hamcrest jar 添加到 Library/Java/Extensions 最终解决了这个问题,而没有其他办法。

    【讨论】:

    • 这对我也有用,但我不知道为什么添加 Maven 依赖项不会。
    【解决方案4】:

    hamcrest-all 的最新版本可在以下位置获得: https://search.maven.org/search?q=a:hamcrest-all

    下载这个版本(与 hamcrest-core 相对),就可以了。

    【讨论】:

    • 这行得通,但不知道为什么hamcrest-core.jar 不行
    猜你喜欢
    • 2013-01-10
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 2018-12-16
    • 2015-03-14
    • 1970-01-01
    相关资源
    最近更新 更多