【问题标题】:JUnit error: Class names, 'org.junit.runner.JUnitCore', are only accepted if annotation processing is explicitly requestedJUnit 错误:仅当显式请求注释处理时才接受类名称“org.junit.runner.JUnitCore”
【发布时间】:2015-10-22 14:54:19
【问题描述】:

在编译java文件没有错误后,当我尝试使用以下命令运行带有测试单元的类时:

javac -cp .:junit-4.12.jar:hamcrest-core-1.3.jar org.junit.runner.JUnitCore NameOfTheClass

我收到以下错误:

错误:类名“org.junit.runner.JUnitCore,DigPowTest, NameOfTheClass”仅在明确请求注释处理时才被接受

有什么想法吗?

提前致谢!

【问题讨论】:

    标签: java unit-testing junit javac


    【解决方案1】:

    我也遇到了这个错误,我想我会发布一个更完整的答案,因为自从发布这个问题以来,已经有几次访问了。

    这里有一个几乎重复的问题:javac error: Class names are only accepted if annotation processing is explicitly requested。然而,这个问题首先出现在谷歌上,因为我的错误信息与 Joao 的匹配度更高(它与 junit 框架有关)。

    Lawrence 的上述回答假设发布者想要编译,但 Joao 在他最初的问题(以及后来在他的评论中)所说的情况并非如此。他已经编译并想要运行该程序,但用javac 代替java 打错了。由于javac 期望以“.java”结尾的文件名作为标准输入,因此它会吐出error: Class names...annotation processing... 错误消息作为响应。

    因此,如果您在尝试运行您的测试代码时收到此消息,那么您可能输入了错误的命令。

    附:我会将此放在评论中,但没有声誉。

    【讨论】:

      【解决方案2】:

      您是否在编译时的文件名中缺少“.java”?

      javac -cp .:junit-4.12.jar:hamcrest-core-1.3.jar org.junit.runner.JUnitCore NameOfTheClass.java
      

      【讨论】:

      • 没有。我在其他帖子上看到过这个答案,但它们对我不起作用。要编译,我会这样做:javac -cp .:junit-4.12.jar NameOfTheClass.java 这足以编译,但要运行我会执行我提到的命令行,我知道它可以工作,因为我已经做过一次。但即使尝试你所说的,它也不起作用。
      • 对不起!我的错误,运行它是:java -cp .:junit-4.12.jar:hamcrest-core-1.3.jar org.junit.runner.JUnitCore NameOfTheClass,即相同的命令行,但不是 'javac' 是 'java'
      猜你喜欢
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-22
      相关资源
      最近更新 更多