Відсутні залежності Мейвена в проекті Eclipse


108

У нас є проект, створений з Maven для вирішення залежностей. Зазвичай працює нормально, але зараз я намагаюся компілювати та запускати його на новому ПК, і у мене проблеми з відсутніми залежностями в Eclipse.

Що смішно, це те, що якщо я запускаю "пакет mvn" в консолі або в затемненні, він працює добре і навіть створює війну, що містить усі необхідні банки. Тільки Eclipse скаржиться на "Проект не був побудований, оскільки шлях його збірки є неповним. Неможливо знайти файл класу для org.slf4j.Logger ...". Якщо я порівнюю проект із деяким іншим комп'ютером (де проект працює чудово), я помічаю, що в списку "Maven зависимостей" у Eclipse вистачає досить багато бібліотек. Навіть хоча вони перебувають у пакунку війни, і їх можна знайти також у папці сховища.

Таким чином, jar-s є просто Eclipse не перелічить їх усіх під "Maven залежності". Що я можу зробити?

Комп'ютер працює під управлінням Windows 7 з 64-бітовою Java & eclipse.


Це проблема сфери, як у jira.codehaus.org/browse/MNG-2045 ?
VonC

1
На цю відповідь не варто публікувати відповідь, але для тих, хто читає її в майбутньому, здається, вам потрібно ввести принаймні три символи без макіяжів. Наприклад, набравши "t" або "to", результати не покажуть, але "tom" буде. Вірите чи ні, я витратив близько години на пошуки різних причин, перш ніж усвідомити це.
Кріс Нев

Відповіді:


117

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

1) Відкрийте файл .classpath у корені проекту вашого затемнення.

2) Вставте у файл такий запис:

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="org.eclipse.jst.component.nondependency" value=""/>
        </attributes>
</classpathentry> 

Потім відновіть проект у затемненні (Project-> Clean-Build). Тепер ви можете перевірити на проекті Java Build Path вашого проекту на вкладці «Бібліотеки» включені залежності Maven: введіть тут опис зображення


3
Це перше, що кожен повинен спробувати. Відкрийте файл .classpath, який буде у вашому каталозі проектів із блокнотом, і додайте згадані рядки та оновіть проект.
Аміт Кумар

9
Це працювало там, де все інше не вдалося. Але чи потрібно це робити для кожного проекту, який я створюю? Чому це не працює автоматично? Яка реальна проблема?
yeaaaahhhh..hamf hamf

Зітхніть, це все ще порушено в m2e 1.6.2.20150902-002. Випробувано за допомогою свіжої ванільної Eclipse, встановленої на Mac OS X / JDK 1.8. Eclipse IDE для розробників Java Версія: Mars.2 Випуск (4.5.2) Ідентифікатор збірки: 20160218-0600 Цікаво, чи потрібен цей плагін Eclipse Java EE для правильної роботи?
Мат Гессел

1
ця відповідь має бути першою. Єдиний, хто працював ;-) thx
Мануель Манхарт

1
Магія! досі діє для Eclipse 4.4.2
проти

89

Проблема вирішена!

Я не знаю, що саме вирішило це, але я зробив 4 речі в Eclipse:

  • Вікно-> Налаштування: Maven-> Установки: Глобальні параметри -> відкритий файл і жорстко закодований localRepository
  • Проект-> Очистити
  • клацніть правою кнопкою миші на проект: Maven-> Оновити залежності
  • клацніть правою кнопкою миші на проект: Maven-> Оновити конфігурацію проекту

Я думаю, що це були оновлення залежності, оскільки відразу після перших двох змін не було.


2
Я знаю "Проект-> Очистити", і я спробував це, але спочатку це не допомогло.
господарник

7
Це був останній пункт. Оновлення конфігурації проекту додасть бібліотеці "Maven Dependunities" до вашого проекту.
Едуард Вірх

2
FYI, я спочатку повинен був клацнути правою кнопкою миші на своєму проекті, перейти до налаштування та "Перетворити на проект Maven".
дума

2
Розгортаючи відповідь Едуарда Вірха, мені також довелося встановити вікно "Примусове оновлення знімків / релізів", знайдене у вікні Maven-> Update Project .... Мій відсутній артефакт був Знімок і якимось чином не оновлювався добре, не примушуючи його.
evaldeslacasa

1
Мені довелося змінити налаштування користувача 'settings.xml', щоб воно було в моєму каталозі '.m2'. Раніше він був встановлений в одному під редакцією Maven install.
Джек Солома

34

Я також новачок у Eclipse, і у мене виникли подібні проблеми, коли Eclipse просто не розпізнає заяву про імпорт, хоча всі ознаки вказують на успішно завантажену залежність.

Ви повинні переконатися, що ваш файл залежності був фактично завантажений, перейшовши в командний рядок і ввівши

mvn dependency:tree

Якщо ви бачите свій пакунок там, але Eclipse не підтверджує його, що для мене (іноді) працює, це перейти до терміналу, ввести папку в папку проекту і ввести

mvn eclipse:clean тоді mvn eclipse:eclipse

Нарешті оновіть проект у затемненні

Я не знаю, чому це працює, а іноді це не спрацьовує один раз, то робити це знову - це добре ... так що варто спробувати!


Це вказало на мене в правильному напрямку, показавши мені, що виникли проблеми з моїм файлом settings.xml! Дякую, @rogueleaderr!
косий

так, це працювало на мого друга, вирішувало всі її проблеми та головні болі. На жаль, у мене не вийшло.
Zack Zilic

Це теж працювало для мене, але чи могла б хтось пояснити, що сталося за сценою ??
YouAreAwesome

31

Мій Проект був просто накручений. Ось як я виправив це для Eclipse Indigo x64 (J2EE 3.7.3):

  1. Видалено мій файл POM (резервна копія, звичайно).
  2. Контекстне меню проекту > Maven > Вимкнути природу Maven .
  3. Видалено проект (але не вміст на диску).
  4. Повторно імпортується як Імпорт > Загальне > Існуючий проект .
  5. Контекстне меню Project > Налаштування > Перетворити в Maven проекту ... .
  6. Прийміть типові налаштування за допомогою майстра Maven.
  7. Запишіть POM за допомогою резервної копії POM. (Тепер у вас папка Maven Dependitions ).
  8. Оновлення / очищення Maven для гарної міри.

Сподіваюся, що хтось допомагає. :)


Це мені допомагає! Я не знаю, що не так, але я використовую 64-розрядний Juno / Springsource 3, і він завжди не може правильно імпортувати свої проекти Maven. Якщо я зареєструюсь як звичайний проект, перейменуйте свій POM, то виконайте ваші вказівки від кроку 5 і далі, це працює. В іншому випадку, ніщо, що я намагаюся, не призведе до того, що залежності від Maven додаються до мого проекту, окрім командного рядка, mvn eclipse:eclipseякий просто жахливий.
ngreen

Я це зробив, але у мене ще немає папки залежності від Maven. Ось мій файл pom.xml, і я думаю, саме тому у мене є така проблема: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>antlr.tuto.calco</groupId> <artifactId>CalculatriceAntlr</artifactId> <version>0.0.1-SNAPSHOT</version> </project>
Anatch

Я дійсно не знаю, де проблема, але я дотримуюся вищезазначених кроків, і це працює дуже добре. Це викликає помилку, як клас не знайдено, xml dtd не знайдено. Але зараз це вирішено. Дякую друже. Оновлення
Sagar007

29

У мене було це питання щодо залежностей, які були створені в інших проектах. Завантажені залежності третьої сторони виявилися чудово на шляху збирання, але не в бібліотеці, яку я створив.

SOLUTION: У проекті, який не будується правильно,

  • Клацніть правою кнопкою миші проект і виберіть Властивості, а потім Maven.

  • Зніміть прапорець " Вирішити залежності від проектів робочої області ".

  • Натисніть Застосувати, а потім ОК.

  • Клацніть ще раз правою кнопкою миші на вашому проекті та зробіть Maven-> Оновити знімки (або оновити залежності)

І ваші помилки повинні зникнути, коли ваш проект відновиться (автоматично, якщо увімкнено автоматичну збірку).


Дякую, це вирішило мою проблему. Здається, це вказує на помилку Eclipse.
Скотт Макінтайр

1
Гей, немає такого поняття, як Maven-> Оновити знімки (або Оновити залежність). Якщо я натискаю правою кнопкою миші, немає варіанту Maven? Де знаходиться те, що ви описали? Я шукаю, але не можу знайти опис після того, як ви натиснете Apply
DarioBB

1
@DarioBB Цій відповіді майже 5 років. Я не працював у Eclipse вже більше року. Я поняття не маю, чи цей варіант все ще доступний чи ні. Можливо, я не в останній версії.
IceBox13

1
Це рішення працювало для мене в Eclipse неону. Зробіть Maven> Update Project (не оновлення знімків) після цього.
Івана

9

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

1) Відкрийте файл .classpath у корені проекту вашого затемнення.

2) Вставте у файл такий запис:

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="org.eclipse.jst.component.nondependency" value=""/>
        </attributes>
</classpathentry> 

Потім відновіть проект у затемненні (Project-> Clean-Build).


Дякую! це рішення найкраще працювало для мене, лише одна корекція була жорсткою, мені довелося закрити і знову відкрити проект.
Тарун Гупта

Чудовий. Це працювало і для мене. В моєму проекті я не міг побачити залежних залежностей. Тепер видно і додано до build-path. Дякую!
Тахір Мехмуд

7

На всякий випадок, якщо хтось спробував усі інші варіанти, і ви все ще застрягли, спробуйте клацнути правою кнопкою миші на папці проекту, перейдіть до параметра Maven і натисніть кнопку "Додати залежність". Чомусь Eclipse не оновлює залежності залежно від pom.xml вручну .

знімок екрана вибору меню


5

У мене була схожа проблема. Я вирішив це, запустивши Maven-> Оновлення конфігурації проекту дій


5

Для мене проблема була в тому, що Maven не зміг знайти файл settings.xml, який знаходиться в myMavenFolder \ conf .

Що я вирішив, щоб вирішити проблему, це вибрати правильне розташування файлу settings.xml від затемнення:
Вікно -> Налаштування -> Maven -> Налаштування користувача

Нарешті, натисніть, застосуйте та оновіть проект


4

Тому я запізнююсь на цю партію приблизно на 4 або 5 років, але у мене виникло це питання після виходу з репо, і жодне інше рішення з цієї теми не спрацювало в моєму випадку, щоб позбутися цих попереджень / помилок.

Це працювало для мене:

З Eclipse перейдіть до вікна -> налаштування -> Maven (розгорнути) -> помилки / попередження. В останньому варіанті йдеться про "Виконання плагінів, не охоплене конфігурацією життєвого циклу" - використовуйте спадне меню для цієї опції та перемкніть "Ігнорувати", потім застосувати, потім ОК. (У пункті "Потрібно оновити Maven проекти" скажіть ОК).

Додаткова інформація:

Це може не обов'язково "виправляти" основні проблеми, і деякі можуть не кваліфікуватися як "найкраща практика", однак це повинно видалити / придушити ці попередження, що з’являються в Eclipse, і дозволить вам хоч ходити вперед. Зокрема, я працював із Eclipse Luna Service Release 1 (4.4.1) з / Spring Dashboard & Spring IDE Core (3.6.3) та m2e (1.5), встановлений під управлінням Linux Linux та OpenJDK 1.7. Я імпортував мій проект як існуючий проект Maven і вибрав ОК, коли його попередили про існуючі попередження / помилки (щоб розібратися з ними пізніше).

Придушити / видалити "Виконання плагіну не охоплене ..." попереджає Eclipse-Maven

(Вибачте, я не дизайнер, але додав малюнок для наочності.)


4

Для наступних кроків, які працювали в моєму випадку:

1 При затемненні клацніть правою кнопкою миші потрібний проект Maven -> Disable Maven Nature

2 Клацніть ще раз правою кнопкою миші та перейдіть до Властивості . Видаліть усі докази зовнішньої залежності від Maven, залишивши лише системну бібліотеку JRE.

3 Клацніть ще раз правою кнопкою миші на проект, потім перейдіть до Налаштування -> Перетворити на проект Maven


3

Жодне з вищезазначених рішень не працювало для мене, тому ця відповідь стосується будь-кого іншого в моїй ситуації. Врешті-решт я сама знайшла проблему та інше рішення. Файл pom.xml містив тег залежностіManagement, який обертав залежності, і M2Eclipse не додав би папку Maven Dependunities, коли вона була присутня. Отже, я видалив цей тег, потім здійснив рішення, запропоноване Уальтером-молодшим, і Eclipse негайно додав папку, що відсутня!


3

Ось кроки, які я виконував.
1. Видалений проект Maven від затемнення.
2. З моєї папки-джерела видалено весь файл (.setting / .classpath / target), крім src та pom.
3. знову імпортується як проект Maven
4. побудуйте його знову, ви повинні мати можливість бачити залежність Maven.


2

Моя відповідь схожа на відповідь @JerylCook: знайдіть інший .classpathфайл у робочому проекті Maven, відредагуйте ваші погані як хороші робочі. Ключ - додати

<attributes>
    <attribute name="maven.pomderived" value="true"/>
</attributes>

в кожному <classpathentry>з типів conі src. Не забудьте змінити <classpathentry .... />в <classpathentry ...>xxx</classpathentry>.

Нарешті, оновіть проект maven та перевстановіть / відновіть у maven.


Це зробило це для мене. Дякую.
NuCradle

1

Якщо у вас виникли помилки "вкладених шляхів" після виконання Maven -> Оновлення конфігурації проекту (або в Juno це "Оновлення конфігурації ..."), ваш шлях збірки неправильно налаштований.

Клацніть правою кнопкою миші проект -> Шлях побудови -> Налаштувати шлях збірки

Переконайтеся, що включені лише '/ src' та каталоги на цьому рівні. Якщо у вас є, наприклад, '/ src', а також '/ src / main / ресурси', це неправильно. Другий ресурс ('/ src / main / ресурси') "вкладений" під перший ('/ src'), що спричиняє вашу неможливість імпортувати ресурси, оскільки заважає затемненню бачити основні залежності.


1

Моє питання звучить схоже, тому я додам до обговорення. Я скасував імпорт існуючого проекту Maven в Eclipse, в результаті чого оновлення не було дозволено і не було належним чином закінчити будівництво робочого простору.

Що я повинен був зробити, щоб вирішити це, було вибрано, Run As... -> Maven build...і під цілями я вступив dependency:go-offlineі провів це.

Потім я клацнув правою кнопкою миші на проект і вибрав Maven -> Update Project...та оновив конкретний проект.

Це нарешті дозволило створити папки-джерела та завершити імпорт.


1

Я міг вирішити помилку за допомогою 1) Клацніть правою кнопкою миші (ваш проект Maven) -> maven -> maven install

Після успішної установки

2) Клацніть правою кнопкою миші (ваш проект Maven) -> maven -> оновити проект. І вся помилка Maven вирішилась!


1

Для мене було достатньо додати buildCommand (org.eclipse.m2e.core.maven2Builder) та природу (org.eclipse.m2e.core.maven2Nature) у файл .project, як це:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>iText</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>org.eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.m2e.core.maven2Builder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.eclipse.jdt.core.javanature</nature>
        <nature>org.eclipse.m2e.core.maven2Nature</nature>
    </natures>
</projectDescription>

і я мав введіть тут опис зображення


1

Ось як я це вирішив

  • Вікно-> Налаштування: Maven-> Налаштування користувача (Клацніть на "відкрити файл" у отриманому вікні або просто відредагуйте settings.xml за допомогою зовнішнього текстового редактора, наприклад Блокнота) Переконайтесь, що localRepository (який відображається у цьому вікні) є правильним. Я мав помилковий друк у своєму файлі.
  • Після виправлення settings.xml натисніть на "Оновити налаштування", що знаходиться на цьому самому екрані Налаштування-> Maven-> Налаштування користувача.

Тепер відновіть, і він встановить останні версії JAR у правильному місці.


1

У мене було подібне питання і я спробував усі відповіді в цьому пості. Найближче до вирішення цього питання я поєднав рішення Джозефа Похоти та Пола Крізе. Я додав резервний файл pom.xml після видалення та повторного імпорту проекту, і нічого не з’явилося, поки я не видалив тег управління залежністю у pom.xml і чарівно папкою залежностей там не було.

Однак це порушило дочірні POM, оскільки їм потрібне управління батьківською залежністю pom.xml для функціонування, і в результаті мій MVN не працював належним чином у проекті ні з Eclipse, ні з командного рядка, що дало помилку pom.xml.

Останнє рішення, якщо все не вдалося - це вручну імпортувати .jar файли, необхідні вашому проекту. Клацніть правою кнопкою миші властивості проекту -> Java Build Path -> Бібліотеки та Додати зовнішній Jar.

Якщо ваш MVN працює правильно з командного рядка, і ви зробили успішну збірку на проекті, у вашій папці .m2 / repository ви будете мати всі необхідні репости. Додайте всі зовнішні баночки, згадані у вашому тегу залежностей pom.xml, і ви побачите розділ бібліотеки, на якому посилаєтесь у вашому Eclipse, з усіма неприємними червоними помилками.

Це не оптимальне рішення, але воно дозволить вам працювати в Eclipse без будь-яких помилок відсутніх залежностей, а також дозволить побудувати проект Maven як з Eclipse, так і з командного рядка.


1

Ця ж проблема трапилася і зі мною, і це було через те, що в завантаженні баночки через проблеми з репо-помилкою сталася помилка, позначена червоним прапором у pom.xml.

Я додав ще одне сховище, щоб червоний прапор pom.xmlзникла, а потім Eclipse знову завантажив пом, вирішив його проблему і перерахував залежності Maven у Project Explorer. звучить просто і очевидно, щоб вирішити видимі проблеми, але оскільки Eclipse був дуже радий керувати Maven і успішно будувати, не було очевидно, що червоний прапор і repo питання лежать в корені його небажання розбирати пом і перелічити Maven залежності



1

оновлення .classpath нижче буде працювати щоразу.

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="target/classes" path="src/main/java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="src" output="target/test-classes" path="src/test/java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="WEB-INF/" kind="src" path="src/main/webapp"/>
    <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="output" path="target/classes"/>
</classpath>

1

Залежності Maven: Що вирішило це для мене в Eclipse? Я додав залежність у файл "pom". Я зробив побудову, але не міг побачити залежність Мавена в затемненні. Наступний крок: Закрили проект. Потім знову відкрили проект. Я міг бачити залежності Мейвена.


1

Я отримав цю помилку, коли в Помі була помилка.

  1. Запустіть mvn eclipse: команда eclipse на консолі, щоб перевірити, чи пам є пробірним чи ні.
  2. Якщо не проаналізовано пошук помилки.

Я бігаю під cygwin, я помітив, що тільки цей проект не будується під затемненням, хоча я отримав успішний збір (з mvn) у командному рядку. Після запуску mvn eclipse:eclipseвсі залежності були додані на класний шлях у проект затемнення, і проект виглядав чудово. ++
Білл Нейлор

0

Це так дивно, що ця одна проблема має стільки різних причин та можливих рішень. Я знайшов ще інше рішення, яке працювало на мене.

Ну, це не стільки рішення, скільки відкриття: я можу побачити вузол Maven Dependunities в Explorer Explorer, який є типовим для перспективи Java, але я не можу бачити його в перспективі Java EE, який використовує Explorer Explorer за замовчуванням. Обоє цих дослідників дуже швидко схожі на дуже схожі, тож ви можете розраховувати побачити залежність Maven в обох.

Коли я намагався це зрозуміти, я не зрозумів цієї різниці, тому зрештою це не було для мене проблемою.


0

весь проект виглядав дивовижним у затемненні, папка залежностей Maven відсутня, він показав деякі типи як невідомі, але я зміг успішно побудувати його в maven. Що вирішило мою проблему, було додавання папки gen до контуру джерела на шляху створення проекту.

Ймовірно, це схоже на цей Android / FBReaderJ / gen вже існує, але це не папка джерела. Перетворити у вихідну папку або перейменувати її


0

У Eclipse STS, якщо "Maven Dependitions" зникає, потрібно перевірити і виправити свою pom.xml. Я це робив (двічі) і вирішував. Це не питання залежності, а String, що генерується та переміщується у випадковому положенні в моєму pom.xml.


0

Все вище зі мною не працювало. Для виправлення потрібно було лише видалити папку сховища під .m2, а потім зробити оновлення Maven від затемнення.


0

Стільки відповідей. Розумієте, може бути багато причин, чому це не працює, як очікувалося. У моєму випадку я також не усвідомлював - Тег навколо моїх залежностей. обличчя

Приклад:

...
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${org.slf4j.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

це лише визначає залежність для цього та всіх підпроектів із потрібною версією! Це те, як воно повинно виглядати, наприклад, у master-POM. Щоб справді використовувати lib у цьому поточному проекті, ви занадто додати залежність наступним чином:

...
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${org.slf4j.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
    </dependency>
</dependencies>

ЗАРАЗ він забезпечить власну роль у ЦЕЙ поточному проекті.

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