【问题标题】:maven error: package org.junit does not existmaven错误:包org.junit不存在
【发布时间】:2012-09-06 09:04:03
【问题描述】:

我正在尝试使用 maven 创建 javadoc,但它失败了。验证时也会失败。

mvn verify

我收到以下错误:

(...)
    [INFO] -------------------------------------------------------------
    [ERROR] COMPILATION ERROR : 
    [INFO] -------------------------------------------------------------
    [ERROR] /home/miquel/creaveu/createOmegaMatrix/src/main/java/edu/url/salle/gtm/hnm/dataStructures/HFrame.java:[6,23]
package org.junit does not exist
    [ERROR] /home/miquel/creaveu/createOmegaMatrix/src/main/java/edu/url/salle/gtm/hnm/dataStructures/HFrame.java:[6,0]
static import only from classes and interfaces
    (···)

在我的 pom.xml 文件中,我有以下几行:

<dependency>
  <groupId>org.junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.8.2</version>
  <scope>test</scope>
</dependency>

我的本​​地存储库包含 junit jar 文件:

miquel@ubuntu:~/creaveu/createOmegaMatrix$ ls -l /home/miquel/.m2/repository/org/junit/junit/4.8.2/
total 248
**-rw-r--r-- 1 miquel miquel 237344 2012-09-13 11:01 junit-4.8.2.jar**
-rw-r--r-- 1 miquel miquel    236 2012-09-13 11:13 junit-4.8.2-javadoc.jar.lastUpdated
-rw-r--r-- 1 miquel miquel      0 2012-09-13 11:13 junit-4.8.2-javadoc.jar-not-available
-rw-r--r-- 1 miquel miquel    458 2012-09-12 18:35 junit-4.8.2.pom
-rw-r--r-- 1 miquel miquel    236 2012-09-13 11:13 junit-4.8.2-sources.jar.lastUpdated
-rw-r--r-- 1 miquel miquel      0 2012-09-13 11:13 junit-4.8.2-sources.jar-not-available
-rw-r--r-- 1 miquel miquel    163 2012-09-13 11:22 _maven.repositories
miquel@ubuntu:~/creaveu/createOmegaMatrix$

代码很好,因为在我现在无法访问的笔记本电脑中,我运行:

mvn javadoc:javadoc
mvn verify

没有问题,并且测试在 eclipse IDE 中工作。

【问题讨论】:

标签: java maven-3 junit4


【解决方案1】:

好的,您已经为 test 类声明了 junit 依赖项(src/test/java 中的那些,但您试图在 main 类中使用它(src/main/java 中的那些)。

要么不要在主类中使用,要么移除&lt;scope&gt;test&lt;/scope&gt;。

【讨论】:

  • 该死的!!!正确的解决了验证目标的问题。现在我对 javadoc 有其他问题,但关于 Latex。所以问题解决了!!!谢谢@Andrew
  • 当我从我的 POM 文件中删除范围测试时,我的测试用例永远不会被执行,尽管我没有收到任何我以前遇到的错误(与上面提到的相同)。我的测试也在 src/test/java 下,我在 src/main/java 中的库很少。
  • 如果子模块不在测试层次结构中使用 junit,您可以使用 test 限定父 pom,并使用 compile 设置子 pom。
  • 我想知道为什么在使用 JUnit 依赖项的测试范围时会得到这个:.../src/test/java/com/...RuleTest.java:[3,24] package org .junit 不存在
  • 谢谢!我为这个问题苦苦挣扎了好几个小时。
【解决方案2】:

我通过插入以下代码行修复了这个错误:

<dependency>
  <groupId>junit</groupId>     <!-- NOT org.junit here -->
  <artifactId>junit-dep</artifactId>
  <version>4.8.2</version>
  <scope>test</scope>
</dependency>

进入 节点。

更多详情请参考:http://mvnrepository.com/artifact/junit/junit-dep/4.8.2

【讨论】:

  • 这是一个糟糕的解决方案,因为您在此依赖项部分中遗漏了 &lt;scope&gt;test&lt;/scope&gt; 标记。这意味着测试将被编译到您的生产代码中。
【解决方案3】:

如果您使用的是 Eclipse,请注意您的 POM 依赖项以及您对 junit 的 Eclipse 构建路径依赖项

如果您选择使用 Junit4 eclipse 创建 TestCase 使用 org.junit 包,但您的 POM 默认使用 Junit3(junit.framework 包),这就是原因,如下图:

只需将 POM 文件中的 Junit 依赖项更新为 Junit4 或将 Eclipse BuildPath 更新为 Junit3

【讨论】:

  • 好吧,我两年前问过这个问题,现在我不再做这个了,至少现在是这样。但感谢您的回答。不知道我是否必须以某种方式将其设置为关闭。
  • @dwjohnston 太棒了!!我没有使用 maven,但很高兴看到我的问题对其他人有帮助;)也感谢 Grubhart 的回答。 :)
【解决方案4】:

在我的例子中,罪魁祸首是没有区分 pom.xml 中的 main 和 test 源文件夹(由 eclipse maven 项目生成)

<build>
    <sourceDirectory>src</sourceDirectory>
    ....
</build>

如果你覆盖 pom 文件中的默认源文件夹设置,你必须明确设置主和测试源文件夹!!!

<build>
    <sourceDirectory>src/main/java</sourceDirectory>
    <testSourceDirectory>src/test/java</testSourceDirectory>
    ....
</build>

【讨论】:

  • 删除源目录配置对我有用。但你的评论有帮助。
猜你喜欢
  • 1970-01-01
  • 2017-07-29
  • 2015-02-06
  • 1970-01-01
  • 2018-05-06
  • 1970-01-01
  • 2017-11-01
  • 2020-10-23
  • 2015-06-27
相关资源
最近更新 更多