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

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

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

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

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

Ответ 1

Проблема решена!

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

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

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

Ответ 2

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

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 Build Path вашего проекта на вкладке "Библиотеки", в которую включены зависимости Maven: enter image description here

Ответ 3

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

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

mvn dependency:tree

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

mvn eclipse:clean тогда mvn eclipse:eclipse

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

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

Ответ 4

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

  • Удалил мой POM файл (конечно, поддерживается).
  • Контекстное меню проекта > Maven > Отключить природу Maven.
  • Удалено проект (но не содержимое на диске).
  • Повторно импортировано как Импорт > Общий > Существующий проект.
  • Контекстное меню проекта > Настроить > Преобразовать в проект Maven....
  • Принять настройки по умолчанию из мастера Maven.
  • Перезаписать POM с помощью POM поддержки. (Теперь у вас есть папка Maven Dependencies).
  • Обновление Maven/очистка для хорошей меры.

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

Ответ 5

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

SOLUTION: В проекте, который не строит правильно,

  • Щелкните правой кнопкой мыши проект и выберите "Свойства", а затем "Мейвен".

  • Снимите флажок " Разрешить зависимости из рабочей области проекты "

  • Нажмите "Применить", а затем "ОК".

  • Щелкните правой кнопкой мыши по вашему проекту и сделайте Maven- > Update Snapshots (или Зависимости обновления)

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

Ответ 6

На всякий случай кто-то попробовал все остальные параметры, и вы все еще застряли, попробуйте щелкнуть правой кнопкой мыши по папке проекта, перейти к опции Maven и нажать кнопку "add dependency". По какой-то причине Eclipse не обновляет зависимости вручную из pom.xml при первой попытке.

screen shot of menu selection

Ответ 7

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

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

От Eclipse перейдите в Окно → Настройки → Maven (развернуть) → Ошибки/Предупреждения. Последняя опция гласит: "Выполнение плагинов не покрывается конфигурацией жизненного цикла" - используйте раскрывающееся меню для этой опции и переключите "Игнорировать", затем "Применить", затем "ОК". (В поле "Требуется обновление Maven Projects" введите "ОК" ).

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

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

Suppress/Remove "Plugin Execution not covered..." warnings Eclipse-Maven

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

Ответ 8

В следующем случае мы выполнили следующие шаги:

1 На затмении щелкните правой кнопкой мыши по желаемому проекту Maven → Disable Maven Nature

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

3 Щелкните правой кнопкой мыши еще раз на проекте, затем перейдите в Настроить → Преобразовать в проект Maven

Ответ 9

У меня была аналогичная проблема. Я решил это, выполнив Maven- > Update Project Configuration действие

Ответ 10

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

Ответ 11

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

Что я сделал, чтобы исправить проблему, было выбрать правильное расположение файла settings.xml из eclipse:
Окно → Настройки → Maven → Настройки пользователя

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

Ответ 12

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

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

Ответ 13

Если у вас есть ошибки "вложенных путей" после выполнения Maven → Обновить конфигурацию проекта (или в Juno это "Обновить конфигурацию..." ), то ваш путь сборки неверно сконфигурирован.

Щелкните правой кнопкой мыши проект → Путь сборки → Настроить путь сборки

Убедитесь, что включены только '/src' и каталоги на этом уровне. Если у вас есть, например, '/src', а также '/src/main/resources', это неверно. Второй ресурс ('/src/main/resources') является "вложенным" под первым ( "/src" ), который вызывает невозможность импорта ресурсов, поскольку он не позволяет eclipse видеть зависимости maven.

Ответ 14

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

Что мне нужно было сделать, чтобы разрешить это, выберите Run As... -> Maven build... и в разделе Goals I, введенный dependency:go-offline, и запустил это.

Затем я щелкнул правой кнопкой мыши проект и выбрал Maven -> Update Project... и обновил этот конкретный проект.

Это позволило создать исходные папки и завершить импорт.

Ответ 15

Я мог бы решить ошибку 1) Щелкните правой кнопкой мыши (ваш проект maven) → maven → maven install

После успешной установки

2) Щелкните правой кнопкой мыши (ваш проект maven) → maven → проект обновления. И вся ошибка maven была решена!

Ответ 16

Для меня достаточно было добавить 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>

и я enter image description here

Ответ 17

Вот как я его решил

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

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

Ответ 18

У меня была аналогичная проблема, и я попытался ответить на все вопросы в этом сообщении. Ближе всего я пришел к решению этой проблемы, объединив решения Joseph Lust и Paul Crease. Я добавил резервный файл pom.xml после удаления и реимпорта проекта, и ничего не появилось до тех пор, пока я не удалю тег управления зависимостями в pom.xml, и, как волшебная, папка зависимостей была там.

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

Последнее решение, если все не удается, - это вручную импортировать файлы .jar, необходимые вашему проекту. Щелкните правой кнопкой мыши проект "Свойства" → "Путь сборки Java" → "Библиотеки" и "Добавить внешний баннер".

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

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

Ответ 19

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

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

Ответ 20

mvn eclipse:clean

то из затмения: "Проект обновления Maven" делает трюк!

Ответ 21

обновить .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>

Ответ 22

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

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

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

Ответ 23

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

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

Ответ 24

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

Ответ 25

В следующем случае мы выполнили следующие шаги:

1 На затмении щелкните правой кнопкой мыши по желаемому проекту Maven → Disable Maven Nature

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

3 Щелкните правой кнопкой мыши еще раз на проекте, затем перейдите в меню "Настроить" → "Преобразовать в проект Maven"

он работал у меня также

Ответ 26

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

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

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

Наконец, обновите проект maven и переустановите/перестройте в maven.

Ответ 27

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

Ответ 28

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

Пример:

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

this only ОПРЕДЕЛИЕТ зависимость для этого и всех подпроектов с нужной версией! Это то, что это, например, должен выглядеть как в мастер-ПОМ. Чтобы действительно использовать 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>

СЕЙЧАС он предоставит lib в этом текущем проекте.