簡體   English   中英

maven錯誤:包org.junit不存在

[英]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 包),這就是原因,如下圖所示:

見 JUNIT 沖突

只需將 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM