Java maven错误:包org.junit不存在
我试图用maven创建javadoc,但失败了。执行验证时,它也会失败Java maven错误:包org.junit不存在,java,maven-3,junit4,Java,Maven 3,Junit4,我试图用maven创建javadoc,但失败了。执行验证时,它也会失败 mvn verify 我得到以下错误: (...) [INFO] ------------------------------------------------------------- [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERR
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>
代码很好,因为在我现在无法访问的笔记本电脑中,我运行:
mvn javadoc:javadoc
mvn verify
没有问题,测试也可以在EclipseIDE中工作。好的,您只为
test
类声明了junit
依赖关系(那些在src/test/java
中的类,但是您试图在main
类中使用它(那些在src/main/java
中的类)
不要在主类中使用它,或者删除
test
我通过插入以下代码行修复了此错误:
<dependency>
<groupId>junit</groupId> <!-- NOT org.junit here -->
<artifactId>junit-dep</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
朱尼特
如果您正在使用Eclipse,请在junit上查看POM依赖项和Eclipse buildpath依赖项
如果选择use Junit4 eclipse create TestCase using org.junit package,但POM默认使用Junit3(junit.framework package),这就是原因,如下图所示:
只需将POM文件中的Junit依赖项更新为Junit4,或将Eclipse构建路径更新为Junit3。在我的例子中,罪魁祸首是没有区分POM.xml(由Eclipse maven项目生成)中的main和test sources文件夹
src
....
如果覆盖pom文件中的默认源文件夹设置,则必须显式设置主文件夹和测试源文件夹
<build>
<sourceDirectory>src/main/java</sourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory>
....
</build>
src/main/java
src/test/java
....
damn!!!这就解决了verify goal的问题。现在我在javadoc上还有其他问题,但是关于Latex。所以问题解决了!!!谢谢@andrew当我从POM文件中删除范围测试时,我的测试用例永远不会执行,尽管我以前没有遇到任何错误(如上所述)。我的测试也在src/test/java下,我有几个lib在src/main/java中。如果子模块不在测试层次结构中使用junit,则可以使用test定义父pom的范围,并使用compile定义子pom。我想知道为什么在使用junit依赖项的测试范围时会出现这种情况:…/src/test/java/com/…RuleTest.java:[3,24]包org.junit不存在相同的症状,不同的原因:好吧,我两年前问过这个问题,现在我不再做它了,至少现在是这样。但是谢谢你的回答。我不知道我是否必须以某种方式将它设置为关闭。@dwjohnston太好了!!我不与maven合作,但很高兴看到我的问题帮助了其他人;)也请向格鲁巴特咨询答案。:)这是一个糟糕的解决方案,因为您忽略了此依赖项部分中的test
标记。这意味着测试将被编译到您的生产代码中。删除源目录配置对我来说很有效。但你的评论起了作用。
<build>
<sourceDirectory>src</sourceDirectory>
....
</build>
<build>
<sourceDirectory>src/main/java</sourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory>
....
</build>