junit中的java.lang.NoClassDefFoundError

72 java eclipse junit noclassdeffounderror

我在junit测试代码中的java中收到此错误.我抬头看着网,它说我需要在类路径中添加junit.jar.

在Eclipse中,我已将它添加到Project Properties窗口的类路径中,但仍然会出现初始化错误.我该怎么办..?

这是错误的完整描述:

java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$000(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    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)
    at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:13)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:32)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:41)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:31)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    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)
    ... 25 more
Run Code Online (Sandbox Code Playgroud)

Chr*_*ett 96

  1. 在Package Explorer中右键单击您的项目>单击Properties
  2. 转到Java Build Path> Libraries选项卡
  3. 点击"添加图书馆"按钮
  4. 选择JUnit
  5. 点击下一步.

你应该能够从那里处理它.

  • 只需仔细检查您是否在类路径上有Hamcrest库.当前版本的JUnit 4应该是完全包容的,但有时人们会拆分包. (5认同)

dee*_*try 19

  1. Eclipse - >顶层菜单 - >运行 - >运行配置
  2. 删除所有出现的测试.您的测试可能显示为YourTest.Method_1().也删除它.
  3. 重新运行.让Eclipse构建一个全新的配置.

附录:本地我创建了一个"用户库"并添加到我的项目中

hamcrest-core-1.3.jar

junit-4.12.jar


Ale*_*lex 11

如果您从JUnit网站下载了JUnit jar,但是忘记下载Hamcrest jar,则会出现同样的问题 - 两者都是必需的(说明说要同时下载,但我跳过了!哎呀)


Tir*_*res 9

在Maven中使用时,更新工件junit:junit,例如4.8.2到4.11.


San*_*han 6

在 Eclipse 上,我能够按照以下步骤解决上述问题:

右键单击要运行的测试文件, 选择运行方式 -> 运行配置 -> 选择类路径选项卡 -> 选择引导项 -> 选择高级 -> 选择添加库 -> 选择 JUnit -> 下一步 ->从下拉菜单中选择 JUnit4 -> Finish

然后选择应用 -> 运行