Отсутствующие зависимости Maven в проекте Eclipse - PullRequest
95 голосов
/ 24 ноября 2010

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

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

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

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

Ответы [ 33 ]

1 голос
/ 12 июня 2017

обновление .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 голос
/ 23 мая 2018

Maven Dependencies: что решило это для меня в Eclipse? Я добавил зависимость в файл "pom". Я сделал сборку, но не смог увидеть Maven Dependency в Eclipse. Следующий шаг: закрытый проект. Затем возобновил проект. Я мог видеть зависимости Maven.

1 голос
/ 12 сентября 2017

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

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

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

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

1 голос
/ 12 февраля 2017
mvn eclipse:clean

затем из затмения: "Maven Update Project" делает свое дело!

0 голосов
/ 14 мая 2018

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

Java Element Filters.

0 голосов
/ 13 февраля 2018

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

Пример:

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

СЕЙЧАС она предоставит библиотеку в ЭТОМ текущем проекте.

0 голосов
/ 20 сентября 2017

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

0 голосов
/ 07 июня 2017

Для следующих шагов, сработавших в моем случае:

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

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

3 Еще раз щелкните правой кнопкой мыши по проекту, затем перейдите в «Конфигурация» -> «Преобразовать в проект Maven»

, это сработало и для меня

0 голосов
/ 28 августа 2013

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

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

0 голосов
/ 02 апреля 2019

Ниже решение сработало для меня -
1- Перейти в каталог проекта
2 - запустите mvn eclipse: eclipse (надеюсь, что mvn добавлен на вашем пути)
3 - запустить mvn clean install

Обновите ваш проект в Eclipse и проверьте.

...