【发布时间】:2021-04-02 00:28:50
【问题描述】:
当我尝试运行一些单元测试时,出现以下错误:
java.lang.NoClassDefFoundError: org/junit/runner/manipulation/Filter
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:190)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadTestLoaderClass(RemoteTestRunner.java:320)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:310)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:305)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:283)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:207)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:191)
不得不提一下,junit-4.11.jar 已添加到项目构建路径中。有什么想法吗?
编辑:我(Gábor Lipták)已经阅读了另一个问题,这个问题应该是重复的。 这不是重复的。如果有人在 Eclipse 中将 Gradle Buildship 作为构建插件,如果您错误地将测试类放入
main/resorces而不是test/resources。在生成运行配置时,Buildship 似乎负责测试与编译类路径。请参阅下面我的.classpath文件的以下 sn-ps 作为证据:
<classpathentry kind="src" output="bin/main" path="src/main/resources">
<attributes>
<attribute name="gradle_scope" value="main"/>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="bin/test" path="src/test/resources">
<attributes>
<attribute name="gradle_scope" value="test"/>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
【问题讨论】:
-
不确定这是否完全重复,错误引用了不同的类,并且未在其他页面上提供解决方案。
-
这不应被标记为重复,因为在另一个问题中错误消息清楚地表明缺少 hamcrest,而在这个问题中,错误消息告诉我们无法找到 Filter 类
-
我猜你的项目不是基于 maven 的。运行 -> 运行配置 打开选项卡“类路径”,单击左侧的“高级...”按钮 选择“添加库”-> Junit 然后,在“用户条目”下,您将看到 Junit 库。