[英]maven error: package org.junit does not exist
我正在嘗試使用 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 中運行。
好的,您已經為test
類聲明了junit
依賴項(那些在src/test/java
但您試圖在main
類中使用它(那些在src/main/java
中)。
要么不要在主類中使用它,要么刪除<scope>test</scope>
。
我通過插入以下代碼行來修復此錯誤:
<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
如果您使用的是 Eclipse,請注意您的 POM 依賴項和 Eclipse buildpath 對 junit 的依賴項
如果您選擇使用 Junit4 eclipse 創建 TestCase 使用 org.junit 包,但您的 POM 默認使用 Junit3(junit.framework 包),這就是原因,如下圖所示:
只需將 POM 文件中的 Junit 依賴項更新為 Junit4 或將 Eclipse BuildPath 更新為 Junit3
就我而言,罪魁禍首是沒有區分 pom.xml 中的主要和測試源文件夾(由 eclipse maven 項目生成)
<build>
<sourceDirectory>src</sourceDirectory>
....
</build>
如果您在 pom 文件中覆蓋默認源文件夾設置,則必須顯式設置主要和測試源文件夾!!!!
<build>
<sourceDirectory>src/main/java</sourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory>
....
</build>
我通過結合使用上述一些技巧和在 Stackoverflow 其他地方找到的其他想法解決了這個問題。
通過 Maven 獲取當前最新版本的 Junit,將其添加到我的pom.xml
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.9.0-M1</version>
<scope>test</scope>
</dependency>
在pom.xml中為主要代碼和測試代碼指定不同的源目錄
<sourceDirectory>src/main/java</sourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory>
然而,最重要的變化是我試圖在我的主要源代碼中創建一些測試方法,其中包含這個 import 語句。
import org.junit.jupiter.api.Test;
一旦我從主源文件中刪除了所有測試功能,它就又開始正常工作了。
這導致代碼更整潔,因為現在所有測試都與主構建明確分離。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.