【问题标题】:I keep getting a java.lang.NoClassDefFoundError: org/junit/platform/engine/ConfigurationParameters with Eclipse, but Junit5 installed我不断收到 java.lang.NoClassDefFoundError: org/junit/platform/engine/ConfigurationParameters with Eclipse,但安装了 Junit5
【发布时间】:2021-10-19 09:49:38
【问题描述】:

您好,我正在编写一些 Junit5 测试用例,但是当我执行 Junit5 测试用例时收到以下错误消息...

        java.lang.NoClassDefFoundError: org/junit/platform/engine/ConfigurationParameters
        at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.<init>(JUnit5TestLoader.java:34)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:64)
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
        at java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128)
        at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:350)
        at java.base/java.lang.Class.newInstance(Class.java:645)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:371)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:366)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:310)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:225)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)
        Caused by: java.lang.ClassNotFoundException: org.junit.platform.engine.ConfigurationParameters
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)

但我不知道为什么,因为:

  1. 单击 /src 文件夹并选择“配置构建路径”,然后选择库选项卡,在模块路径下,它表示已将“Junit 5”添加到构建路径上的库 JARS 和类文件夹中。
  2. “pom.xml”包含以下内容:
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>au.edu.rmit.ct</groupId>
  <artifactId>DietelATMCaseStudyUpgrade</artifactId>
  <version>0.0.1-SNAPSHOT</version>
 <dependencies>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.7.2</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.7.2</version>
            <scope>test</scope>
        </dependency>

    </dependencies>
</project>
  1. 选择要执行的测试文件,从上下文菜单中选择“Run As”..“Run Configurations 它在 Test 选项卡上显示测试运行程序为 Junit5,在 Dependencies 选项卡上显示.. 并在模块上显示过去的条目它显示 Junit 5。

显然某处存在错误配置,但我无法确定在哪里,有人有建议吗? (我正在运行 Eclipse 版本:2021-06 (4.20.0))

提前谢谢你

【问题讨论】:

    标签: java eclipse junit junit5


    【解决方案1】:

    您缺少一个依赖项。特别是在现有依赖项中不存在的类。

    直接看依赖的源码就知道了:

    https://repo1.maven.org/maven2/org/junit/jupiter/junit-jupiter-engine/5.7.2/

    如果你解压它,你会看到包 org/junit/platform 不存在,该类也不存在,因此添加以下依赖项:

    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-engine</artifactId>
        <version>1.8.0-M1</version>
        <scope>test</scope>
    </dependency>
    

    【讨论】:

    • 谢谢您的回复,我有: 1. 添加了您在我的 POM.xml 文件中指示的依赖项 2. 单击项目并检查了构建路径库,它具有JRE 系统库 (JavaSE-1.8); J unit 5. 3. 我的项目根目录中没有 .classpath 文件 4. 我不熟悉 maven,但是如果我在 eclipse 中安装了该功能,它会帮助解决和管理我的依赖项吗? 5. 然后我重新运行它,作为一个 Junit,我仍然收到相同的错误消息.. java.lang.NoClassDefFoundError: org/junit/platform/engine/ConfigurationParameters
    • 如果你有 pom.xml 那么你使用的是 maven。进入你的 pom.xml 所在的目录,在你的命令行写 mvn clean install 看看会发生什么
    【解决方案2】:

    我要感谢大家的帮助,因为我发现问题是我必须编辑我的 .classpath 文件,而当我这样做时,它起作用了。我需要更好地了解 maven,一旦当前的测试完成,我将对此进行调查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-24
      • 2020-05-13
      • 2021-10-16
      • 2011-09-04
      • 2020-08-31
      • 2021-04-19
      • 1970-01-01
      • 2016-08-13
      相关资源
      最近更新 更多