Maven-Fehler: Paket org.junit existiert nicht

77

Ich versuche das Javadoc mit Maven zu erstellen und es schlägt fehl. Dies schlägt auch bei der Überprüfung fehl.

mvn verify

Ich erhalte folgende Fehlermeldung:

(...)
    [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
    (···)

In meiner pom.xml-Datei habe ich die folgenden Zeilen:

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

und mein lokales Repository enthält die Junit-JAR-Datei:

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$

Der Code ist in Ordnung, weil ich in meinem Laptop, auf den ich jetzt keinen Zugriff habe, Folgendes ausführen kann:

mvn javadoc:javadoc
mvn verify

ohne Probleme, und auch die Tests funktionieren in Eclipse IDE.

Thema
quelle
Gleiche Symptome, unterschiedliche Ursache: stackoverflow.com/q/5845990/923560
Abdull

Antworten:

154

Ok, Sie haben die junitAbhängigkeit nur für testKlassen deklariert (diejenigen, die sich in befinden, src/test/javaaber Sie versuchen, sie in mainKlassen zu verwenden (diejenigen, die sich befinden src/main/java).

Verwenden Sie es entweder nicht in Hauptklassen oder entfernen Sie es <scope>test</scope>.

Andrew Logvinov
quelle
2
Verdammt!!! Richtig, das hat das Problem mit Verifizierungsziel gelöst. Jetzt habe ich andere Probleme mit Javadoc, aber in Bezug auf Latex. Damit ist das Problem gelöst !!! Danke @ Andrew
Thema
Wenn ich den Bereichstest aus meiner POM-Datei entferne, werden meine Testfälle nie ausgeführt, obwohl ich keinen Fehler erhalte, den ich zuvor erhalten habe (wie oben erwähnt). Meine Tests befinden sich auch unter src / test / java und ich habe einige Bibliotheken, die sich in src / main / java befinden.
OverrockSTAR
1
Sie können einen übergeordneten POM mit <scope> test </ scope> und einen untergeordneten Pom mit <scope> compile </ scope> festlegen, wenn ein untergeordnetes Modul junit verwendet, wenn es sich nicht in der Testhierarchie befindet.
Daniel
Ich frage mich, warum ich dies bekomme, wenn ich den Testbereich für die JUnit-Abhängigkeit verwende: ... / src / test / java / com / ... RuleTest.java:[3,24] Paket org.junit existiert nicht
Panu Haaramo
30

Ich habe diesen Fehler durch Einfügen der folgenden Codezeilen behoben:

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

in den Knoten <dependencies>.

Weitere Details finden Sie unter: http://mvnrepository.com/artifact/junit/junit-dep/4.8.2

Siwei Shen 申思维
quelle
Dies ist eine schlechte Lösung, da Sie die <scope>test</scope>Tags in diesem Abhängigkeitsabschnitt weggelassen haben. Dies bedeutet, dass die Tests in Ihren Produktionscode kompiliert werden.
LightCC
15

Wenn Sie Eclipse verwenden, beobachten Sie Ihre POM-Abhängigkeiten und Ihre Eclipse-Buildpath-Abhängigkeit von junit

Wenn Sie Junit4-Eclipse verwenden auswählen, erstellen Sie TestCase mit dem Paket org.junit, aber Ihr POM verwendet standardmäßig Junit3 (junit.framework-Paket). Dies ist die Ursache, wie in diesem Bild dargestellt:

siehe JUNIT-Konflikt

Aktualisieren Sie einfach Ihre Junit-Abhängigkeit in Ihrer POM-Datei auf Junit4 oder Ihren Eclipse BuildPath auf Junit3

Grubhart
quelle
Nun, ich habe das vor zwei Jahren gefragt, und jetzt arbeite ich zumindest jetzt nicht mehr daran. Aber danke für die Antwort. Ich weiß nicht, ob ich es irgendwie als geschlossen einstellen muss.
Thema
1
@ Dwjohnston großartig !! Ich arbeite nicht mit Maven, bin aber froh zu sehen, dass meine Frage anderen hilft;) auch danke Grubhart für die Antwort. :)
Thema
6

In meinem Fall hat der Täter den Haupt- und den Testquellenordner in pom.xml (generiert durch das Eclipse Maven-Projekt) nicht unterschieden.

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

Wenn Sie die Standardeinstellungen für Quellordner in der POM-Datei überschreiben, müssen Sie die Haupt- UND Testquellordner explizit festlegen !!!!

<build>
    <sourceDirectory>src/main/java</sourceDirectory>
    <testSourceDirectory>src/test/java</testSourceDirectory>
    ....
</build>
nix
quelle
Das Entfernen der Quellverzeichniskonfiguration hat bei mir funktioniert. Aber dein Kommentar hat geholfen.
Karthik P