помилка maven: пакет org.junit не існує


79

Я намагаюся створити javadoc за допомогою maven, і він не вдається. Також не вдається виконати перевірку.

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

Відповіді:


158

Гаразд, ви оголосили junitзалежність testлише для класів (тих, які є, src/test/javaале ви намагаєтесь використовувати її в mainкласах (тих, які є src/main/java).

Або не використовуйте його в основних класах, або видаліть <scope>test</scope>.


2
блін !!! правильно, що вирішило проблему з ціллю перевірки. Зараз у мене є інші проблеми з javadoc, але щодо латексу. Тож проблема вирішена !!! Спасибі @Andrew
тема

Коли я видаляю тест тесту з мого файлу POM, мої тестові випадки ніколи не виконуються, хоча я не отримую жодної помилки, яку я раніше отримував (те саме, що було згадано вище). Мої тести також знаходяться під src / test / java, і у мене мало бібліотек, які знаходяться в src / main / java.
OverrockSTAR

1
Ви можете застосувати батьківський pom за допомогою <scope> test </scope> і мати дочірній pom за допомогою <scope> compile </scope>, якщо дочірній модуль використовує junit, коли він не знаходиться в ієрархії тесту.
Даніель

Мені цікаво, чому я отримую це при використанні області тесту для залежності 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, слідкуйте за своїми залежностями POM та залежністю шляху побудови Eclipse від junit

якщо ви вибрали використовувати Junit4 eclipse, створіть TestCase за допомогою пакета org.junit, але ваш POM використовує за замовчуванням Junit3 (пакет junit.framework), що є причиною, як на малюнку:

див. конфлікт JUNIT

Просто оновіть залежність Junit у своєму файлі POM до Junit4 або ваш Eclipse BuildPath до Junit3


ну, я запитав це два роки тому, і зараз я більше не працюю над цим, принаймні зараз. Але дякую за відповідь. Не знаю, чи потрібно якось встановлювати його як закрите.
тема

1
@dwjohnston чудово !! Я не працюю з maven, але радий бачити, що моє запитання допомагає іншим;) також thnx Grubhart для відповіді. :)
тема

6

У моєму випадку винуватець не розрізнив папку основного та тестового джерел у pom.xml (створений проектом eclipse maven)

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

Якщо ви перевизначаєте параметри вихідної папки за замовчуванням у файлі pom, ви повинні чітко встановити головну І тестувати вихідні папки !!!!

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

Видалення конфігурації вихідного каталогу працювало у мене. Але ваш коментар допоміг.
Картік П
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.