【问题标题】:NoClassDefFoundError for ClasspathRootSelector using JUnit 5使用 JUnit 5 的 ClasspathRootSelector 的 NoClassDefFoundError
【发布时间】:2017-01-20 20:53:54
【问题描述】:

我尝试安装 JUnit 5 库并运行一个示例:

import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
import org.junit.platform.runner.JUnitPlatform;
import org.junit.runner.RunWith;

@RunWith(JUnitPlatform.class)
public class myClass {
    @Test
    void myMethod() {
       System.out.println("myMethod");
    }
}

但得到initializationError

java.lang.NoClassDefFoundError: org/junit/platform/engine/discovery/ClasspathRootSelector
    at org.junit.jupiter.engine.discovery.DiscoverySelectorResolver.resolveSelectors(DiscoverySelectorResolver.java:48)
    at org.junit.jupiter.engine.JupiterTestEngine.resolveDiscoveryRequest(JupiterTestEngine.java:50)
    at org.junit.jupiter.engine.JupiterTestEngine.discover(JupiterTestEngine.java:43)
    at org.junit.platform.launcher.core.DefaultLauncher.discoverRoot(DefaultLauncher.java:108)
    at org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:78)
    at org.junit.platform.runner.JUnitPlatform.generateTestTree(JUnitPlatform.java:113)
    at org.junit.platform.runner.JUnitPlatform.<init>(JUnitPlatform.java:96)
    at org.junit.platform.runner.JUnitPlatform.<init>(JUnitPlatform.java:88)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
    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:33)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createUnfilteredTest(JUnit4TestLoader.java:84)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:70)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.engine.discovery.ClasspathRootSelector
    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

【问题讨论】:

    标签: java junit noclassdeffounderror junit5


    【解决方案1】:

    Right-click Project -&gt; Build Path -&gt; Add Libraries -&gt; JUnit -&gt; (version i.e. 5) -&gt; Finish.

    (或)

    Right-click Project -&gt; Build Path -&gt; Configure Build Path -&gt; Libraries Tab -&gt; Add Library -&gt; JUnit -&gt; (version i.e. 5) -&gt; Finish -&gt; Apply &amp; Close.

    这假设您在 Eclipse 中。其他 IDE 可能有类似的步骤。当 JUnit 在 POM 中但库依赖项不存在时,我也看到了同样的情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-09
      • 2015-01-28
      • 1970-01-01
      相关资源
      最近更新 更多