Отсутствуют зависимости Maven в проекте Eclipse


108

У нас есть проект, созданный с помощью maven для устранения зависимостей. Обычно он работает нормально, но теперь я пытаюсь скомпилировать и запустить его на новом ПК, и у меня проблема с отсутствием зависимостей в Eclipse.

Забавно то, что если я запускаю "mvn package" в консоли или в eclipse, он работает нормально и даже производит войну, содержащую все необходимые баночки. Только Eclipse жалуется: «Проект не был построен, так как его путь сборки неполный. Не удается найти файл класса для org.slf4j.Logger ...». Если я сравниваю проект с каким-либо другим компьютером (на котором проект работает нормально), я замечаю, что в Eclipse в списке «зависимости Maven» отсутствует довольно много библиотек. Несмотря на то, что они находятся в упакованной войне, их также можно найти в папке репозитория.

Итак, jar-файлы есть, но Eclipse не будет перечислять их все в разделе «Зависимости Maven». Что я могу сделать?

Компьютер работает под управлением Windows 7 с 64-битной java и eclipse.


Это проблема с областью действия, как в jira.codehaus.org/browse/MNG-2045 ?
VonC

1
На это не стоит публиковать ответ, но для тех, кто читает это в будущем, кажется, что вам нужно ввести как минимум три символа без подстановочных знаков. Например, ввод «t» или «to» не покажет никаких результатов, но «tom» будет. Хотите верьте, хотите нет, но я потратил около часа на поиски разных причин, прежде чем понял это.
Крис Нев,

Ответы:


118

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

1) Откройте файл .classpath в корне вашего проекта eclipse.

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> 

Затем перестройте свой проект в eclipse (Project-> Clean-Build). Теперь вы можете проверить путь сборки Java вашего проекта на вкладке «Библиотеки», включая зависимости 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 Release (4.5.2) Идентификатор сборки: 20160218-0600 Интересно, требует ли этот подключаемый модуль для правильной работы Eclipse Java EE?
Mat Gessel

1
этот ответ должен быть первым. Только один , который работал ;-) ТНХ
Manuel Манхарт

1
Магия! все еще актуально для Eclipse 4.4.2
версия

89

Задача решена!

Я не знаю, что именно решило это, но я сделал 4 вещи в Eclipse:

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

Я предполагаю, что это были зависимости обновления, поскольку сразу после первых двух изменений не было.


2
Я знаю "Проект-> Очистить", пробовал, но сначала не помогло.
hostnik

7
Это был последний пункт. Обновление конфигурации проекта добавит в ваш проект библиотеку Maven Dependencies.
Эдуард Вирч

2
К вашему сведению, сначала мне нужно было щелкнуть правой кнопкой мыши мой проект, перейти в «Настроить» и «Преобразовать в проект Maven».
duma

2
Расширяя ответ Эдуарда Уирча, мне также пришлось установить флажок «Принудительное обновление снимков / выпусков» в окне Maven-> Обновить проект .... Моим отсутствующим артефактом был снимок, который почему-то не обновлялся без принудительной установки.
evaldeslacasa

1
Мне пришлось изменить настройки пользователя settings.xml, чтобы они находились в моем каталоге .m2. Ранее он был установлен на единицу в каталоге установки Maven.
Джек Стро

35

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

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

mvn dependency:tree

Если вы видите там свой пакет, но Eclipse его не подтверждает, то, что у меня работает (иногда), - это перейти к терминалу, cd в папку проекта и ввести

mvn eclipse:clean затем mvn eclipse:eclipse

Наконец обновите проект в eclipse

Я не знаю, почему это работает, и иногда это не срабатывает один раз, а затем повторение работает ... так что стоит попробовать!


Это указывало мне на правильное направление, показывая, что с моим файлом settings.xml возникли проблемы! Спасибо, @rogueleaderr!
slashp 04

да, у моей подруги это сработало, решило все ее проблемы и головные боли. К сожалению, у меня не сработало.
Zack Zilic

Это сработало и для меня, но может ли кто-нибудь объяснить, что произошло за кулисами?
YouAreAwesome

Работает на меня. Идеальное исправление.
Рамарадж Каруппусами

31

Мой проект просто облажался. Вот как я исправил это для Eclipse Indigo x64 (J2EE 3.7.3):

  1. Удалил мой файл POM (конечно, резервную копию).
  2. Контекстное меню проекта > Maven > Отключить Maven Nature .
  3. Удалил проект (но не содержимое на диске).
  4. Повторно импортирован как Импорт > Общие > Существующий проект .
  5. Контекстное меню Project > Настройка > Преобразовать в Maven проекта ... .
  6. Примите значения по умолчанию из мастера Maven.
  7. Замените POM резервным POM. (Теперь у вас есть папка Maven Dependencies ).
  8. Maven Update / Clean для хорошей меры.

Надеюсь, это кому-то поможет. :)


Это мне помогает! Я не знаю, что не так, но я использую 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-> Update Snapshots (или Update Dependencies). Если я щелкну правой кнопкой мыши, нет опции Maven? Где находится то, что вы описали? Я ищу, но не могу найти описание после того, как вы
нажали

1
@DarioBB Этому ответу почти 5 лет. Я не работал в Eclipse больше года. Я понятия не имею, доступна эта опция или нет. Возможно, у меня не самая последняя версия.
IceBox13,

1
Это решение сработало для меня в Eclipse neon. После этого сделайте Maven> Обновить проект (не обновлять снимки).
Ивана

9

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

1) Откройте файл .classpath в корне вашего проекта eclipse.

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> 

Затем перестройте свой проект в eclipse (Project-> Clean-Build).


Спасибо! это решение сработало для меня лучше всего, только одно исправление сложно, мне пришлось закрыть и снова открыть проект.
Тарун Гупта,

Чудесно. Это сработало и для меня. В моем проекте я не мог видеть зависимости maven. Теперь виден и добавлен в путь сборки. Спасибо!
Тахир Мехмуд

7

На всякий случай, если кто-то попробовал все другие варианты, а вы все еще застряли, попробуйте щелкнуть правой кнопкой мыши папку проекта, перейти к параметру Maven и нажать кнопку «Добавить зависимость». По какой-то причине Eclipse не обновляет зависимости вручную из pom.xml с первой попытки.

снимок экрана выбора меню


5

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


5

Для меня проблема заключалась в том, что maven не смог найти файл settings.xml, который находится в myMavenFolder \ conf .

Чтобы исправить эту проблему, я выбрал правильное расположение файла settings.xml из eclipse:
Window -> Preferences -> Maven -> User Settings

Наконец, нажмите "Применить" и обновите свой проект.


4

Итак, я опоздал примерно на 4 или 5 лет на эту вечеринку, но у меня возникла эта проблема после выхода из нашего репо, и ни одно из других решений из этого потока в моем случае не помогло избавиться от этих предупреждений / ошибок.

Это сработало для меня:

Из Eclipse перейдите в Window -> Preferences -> Maven (развернуть) -> Errors / Warnings. Последний вариант гласит: «Выполнение плагина не охвачено конфигурацией жизненного цикла» - используйте раскрывающееся меню для этого параметра и переключите «Игнорировать», затем «Применить», затем «ОК». (В строке «Требуется обновление проектов Maven» скажите ОК).

Дополнительная информация:

Это не обязательно может «исправить» основную проблему (проблемы) и не может квалифицироваться как «лучшая практика» некоторыми, однако оно должно удалить / подавить появление этих предупреждений в Eclipse и позволить вам, по крайней мере, двигаться вперед. В частности, я работал с Eclipse Luna Service Release 1 (4.4.1) с установленной Spring Dashboard и Spring IDE Core (3.6.3) и m2e (1.5), работающим на Arch Linux и OpenJDK 1.7. Я импортировал свой проект как существующий проект maven и выбрал ОК, когда получил предупреждение о существующих предупреждениях / ошибках (чтобы разобраться с ними позже).

Подавить / удалить предупреждения «Выполнение подключаемого модуля не покрыто ...» Eclipse-Maven

(Извините, я не дизайнер, но добавил картинку для наглядности.)


4

В моем случае сработали следующие шаги:

1 В eclipse щелкните правой кнопкой мыши нужный проект Maven -> Отключить Maven Nature

2 Щелкните правой кнопкой мыши еще раз, затем перейдите в « Свойства» . Удалите все свидетельства внешней зависимости Maven, оставив только системную библиотеку JRE.

3 Щелкните правой кнопкой мыши еще раз по проекту, затем перейдите в Configure -> Convert to Maven Project.


3

Ни одно из приведенных выше решений не помогло мне, поэтому этот ответ предназначен для всех в моей ситуации. В конце концов я сам нашел проблему и другое решение. Файл pom.xml содержал тег dependencyManagement, который обертывал зависимости, и M2Eclipse не добавлял папку Maven Dependencies, когда она присутствовала. Итак, я удалил этот тег, затем выполнил решение, предложенное Ualter Jr., и Eclipse немедленно добавил недостающую папку!


3

Вот шаги, которым я следовал.
1. Удален проект maven из eclipse.
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 / resources', это неверно. Второй ресурс ('/ src / main / resources') «вложен» в первый ('/ src'), что приводит к вашей неспособности импортировать ресурсы, поскольку он не позволяет eclipse видеть зависимости maven.


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» -> «Библиотеки» и «Добавить внешний Jar».

Если ваш MVN работает правильно из командной строки и вы успешно выполнили сборку проекта, у вас будут все необходимые репозитории в папке .m2 / repository. Добавьте все внешние jar-файлы, упомянутые в вашем теге dependencies файла pom.xml, и вы увидите раздел библиотеки, на который имеется ссылка, в вашем Eclipse, в котором исчезнут все надоедливые красные ошибки.

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


1

Та же проблема произошла со мной, и это произошло из-за ошибки при загрузке jar-файла из-за проблем с репо, о чем свидетельствует красный флаг в файле pom.xml.

Я добавил еще один репозиторий, поэтому красный флаг в pom.xmlисчезнувшем, а затем Eclipse снова загрузил pom, решил проблему и перечислил зависимости maven в Project Explorer. это звучит просто и очевидно, чтобы решить видимые проблемы, но поскольку Eclipse был вполне счастлив запустить maven и успешно построить, не было очевидно, что красный флаг и проблема репо были в корне его нежелания анализировать pom и перечислять 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". Я выполнил сборку, но не увидел зависимости Maven в Eclipse. Следующий шаг: закрыл проект. Затем снова открыли проект. Я мог видеть зависимости Maven.


1

Я получил эту ошибку, когда у меня была ошибка в Pom.

  1. Запустите команду mvn eclipse: eclipse на консоли, чтобы проверить, можно ли разбирать pom.
  2. Если не разбирается, ищите ошибку.

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

0

Удивительно, что у этой проблемы так много разных причин и возможных решений. Я нашел еще одно решение, которое сработало для меня.

Что ж, это не столько решение, сколько открытие: я вижу узел Maven Dependencies в Package Explorer, который используется по умолчанию для перспективы Java, но я не вижу его в перспективе Java EE, которая использует Project Explorer по умолчанию. Оба исследователя на первый взгляд выглядят очень похожими, поэтому вы можете ожидать увидеть зависимости Maven в обоих.

Когда я пытался понять это, я не осознавал этой разницы, так что, в конце концов, для меня это не было проблемой.


0

весь проект выглядел странно в eclipse, папка зависимостей maven отсутствовала, некоторые типы были показаны как неизвестные, но я смог успешно построить его в maven. Что исправило мою проблему, так это добавление папки gen в исходный путь на пути сборки проекта.

Возможно, это похоже на то, что Android / FBReaderJ / gen уже существует, но не является исходной папкой. Преобразуйте в исходную папку или переименуйте ее


0

В Eclipse STS, если "Maven Dependencies" исчезнет, ​​вам необходимо проверить и исправить свой файл pom.xml. Я сделал это (дважды) и решил это. Это была не проблема с зависимостями, а сгенерированная строка и перемещенная в произвольную позицию в my pom.xml.


0

Все вышеперечисленное у меня не сработало. Для исправления было только удалить папку репозитория в .m2, а затем выполнить обновление maven из eclipse.


0

Так много ответов. Видите ли, может быть много причин, почему это не работает, как ожидалось. В моем случае я также не осознавал - Тег вокруг моих зависимостей. фейспалм

Пример:

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

это только ОПРЕДЕЛЯЕТ зависимость для этого и всех подпроектов с желаемой версией! Вот как это, например, должно выглядеть в master-POM. Чтобы действительно использовать библиотеку в ЭТОМ текущем проекте, вы также должны добавить следующую зависимость:

...
<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.