首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JUnit: NoClassDefFoundError: org/junit/runner/org/Filter

JUnit: NoClassDefFoundError: org/junit/runner/org/Filter
EN

Stack Overflow用户
提问于 2015-11-04 12:04:32
回答 4查看 66.2K关注 0票数 24

当我尝试运行一些单元测试时,会引发以下错误:

代码语言:javascript
复制
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是添加到项目构建路径中的。有什么想法吗?

编辑:I (Gábor Lipták)阅读了另一个问题,这个问题应该是重复的。--这不是一个复制。--如果有人将Gradle Buildship作为Eclipse中的构建插件,如果您错误地将测试类放在main/resorces而不是test/resources中,则会引发此错误。当涉及到生成运行配置时,Buildship似乎负责测试和编译类路径。作为证据,请参阅下面.classpath文件的以下片段:

代码语言:javascript
复制
<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>
EN

回答 4

Stack Overflow用户

发布于 2015-12-03 13:29:37

即使是我也面临着同样的问题,所以试试下面的步骤-

  1. 在Package中右键单击项目,然后单击Properties。
  2. 单击“图书馆”选项卡。
  3. 单击“添加库”按钮。
  4. 选择JUnit并单击Next。
  5. 选择JUnit 4(这就是我正在使用的)。
  6. 点击finish。
  7. 现在,右键单击包含单元测试的文件并选择Properties。
  8. 在Run/Debug设置下,从该文件的启动配置中删除所有条目。打得好。

希望你现在能做测试。

票数 45
EN

Stack Overflow用户

发布于 2020-10-20 22:08:43

将JUnit库添加到模块路径而不是Classpath可能会导致此错误。

在Eclipse中,最左边的面板"Package“右键单击项目,然后转到"Java”,单击"Classpath“而不是"Modulepath”,单击"Add .“然后是Junit。

票数 21
EN

Stack Overflow用户

发布于 2021-01-30 21:48:48

在我的示例中,错误具有相同的堆栈跟踪(以java.lang.Class.forName0(Native Method)结尾),但错误消息不同:

java.lang.VerifyError: (class: org/junit/runner/manipulation/Alphanumeric, method: create signature: (Lorg/junit/runner/manipulation/Ordering$Context;)Lorg/junit/runner/manipulation/Ordering;) Wrong return type in function

原来是因为我把JUnit从4.11升级到4.13.1,因为GitHub的“可靠性”在我的某个公共项目上是这样建议的,甚至创建了合并请求供我接受,我想,“当然,为什么会出错呢?”结论:不要相信GitHub的依赖者。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33521436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档