java - Eclipse NoClassDefFoundError for LauncherFactory 未找到使用 JUnit 5 的测试

标签 java eclipse junit junit5

问题

每当我运行我的项目 JUnit 测试(使用 JUnit 5 与 Java 9 和 Eclipse Oxygen 1.a)时,我都会遇到 eclipse 找不到任何测试的问题。

说明

在运行配置下,eclipse甚至找不到带有@Test注解的方法,而是只显示“(所有方法)”。 希望下面的图片可以更好地了解我的设置:

https://imgur.com/a/FTe9c

控制台输出:

java.lang.NoClassDefFoundError: org/junit/platform/launcher/core/LauncherFactory
    at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.<init>(JUnit5TestLoader.java:31)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.base/java.lang.Class.newInstance(Unknown Source)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:368)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:363)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:307)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:222)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.launcher.core.LauncherFactory
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    ... 11 more

到目前为止我尝试了什么

我已经试过了

  • 从构建路径中删除测试文件夹并重新添加。
  • 将鼠标悬停在带有@Test 注释的方法上开始测试,然后单击“Run as JUnit Test”。
  • 从 Buildpath 中移除 JUnit 并重新添加它
  • 重启eclipse
  • 我还将整个项目从一台机器移动到另一台机器,并使用那里提供的 eclipse 安装进行了尝试
  • 重命名测试方法。
  • 重新输入@Test 注释

其中一些步骤can be found here ,但最终问题仍然存在。

最佳答案

我通过右键单击测试并选择“运行配置”并将“测试运行器:”选项更改为“JUnit 4”来解决此问题,如下所示:

Screenshot of run configruations

我再次运行了测试,它成功了。

关于java - Eclipse NoClassDefFoundError for LauncherFactory 未找到使用 JUnit 5 的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46717693/

相关文章:

c++ - Eclipse,无法解析 C++ 方法 str()

java - 使用 Maven 在 .project 中添加 buildCommand

java - mockito test void 方法,重写成员变量

java - 将图片存储在H2数据库spring boot thymeleaf中

java - 获取与系统格式相同的系统日期

Java 反射 : Find method usage in custom AbstractProcessor

java - 如何将 RequestMappingHandlerMapping 和 ResourceHandlers 添加到 springMVC 配置类

java - Eclipse 格式化程序 : How to avoid indentation of method declaration after annotation?

java - 如何让 Eclipse 2018.09 默认使用 JUnit 4 测试运行器?

java - Drools 规则在 Spring Boot Controller 中不起作用,但在 Junit Test 中起作用