Maven错误:包org.junit不存在


78

我正在尝试使用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中使用。


相同的症状,不同的原因:stackoverflow.com/q/5845990/923560
Abdull

Answers:


155

好的,您只声明了junittest类的依赖(src/test/java位于中的main类,但是您试图在类(位于中的类中src/main/java)使用它。

不要在主类中使用它,也不要删除它<scope>test</scope>


2
该死的!!!用验证目标解决了问题的权利。现在我还有其他关于javadoc的问题,但是关于Latex。这样问题就解决了!!!感谢@Andrew
主题

当我从POM文件中删除范围测试时,我的测试用例从未得到执行,尽管我没有以前遇到的任何错误(与上述相同)。我的测试也位于src / test / java下,而我在src / main / java中有几个库。
OverrockSTAR '16

1
如果子模块不在测试层次结构中时使用junit,则可以使用<scope> test </ scope>定义父pom的范围,并使用<scope> compile </ scope>定义子pom的范围。
丹尼尔(Daniel)

我想知道为什么在将测试范围用于JUnit依赖项时得到此信息:... / src / test / java / com / ... RuleTest.java:[3,24]包org.junit不存在
Panu Haaramo

30

我通过插入以下代码行来修复此错误:

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

进入<dependencies>节点。

有关更多详细信息,请参阅:http : //mvnrepository.com/artifact/junit/junit-dep/4.8.2


当您<scope>test</scope>在此依赖项部分中省略标签时,这是一个糟糕的解决方案。这意味着测试将被编译为您的生产代码。
LightCC

15

如果您使用的是Eclipse,请注意对junit的POM依赖性和Eclipse buildpath依赖性

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

见JUNIT冲突

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


好吧,我两年前问过这个问题,现在至少在现在,我不再从事此工作了。但是,谢谢您的回答。不知道我是否必须将其设置为关闭状态。
主题

1
@dwjohnston太好了!我没有与Maven合作,但很高兴看到我的问题对其他人有所帮助;)也向Grubhart寻求答案。:)
主题

6

就我而言,罪魁祸首是没有区分pom.xml(由Eclipse Maven项目生成)中的main和test sources文件夹。

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

如果您覆盖pom文件中的默认源文件夹设置,则必须显式设置主AND测试源文件夹!!!

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

删除源目录配置对我有用。但是您的意见有所帮助。
Karthik P
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.