Quickfix:
Сделайте резервную копию .classpath и .project и .settings / org.eclipse.wst.common.component.
Запустите эту команду:
mvn eclipse:eclipse
Или, щелкните правой кнопкой мыши над проектом, в подменю Maven , у вас есть Обновить проект ... команда, которая, как мне кажется, делает то же самое.
переиздавать.
Пояснение:
Скорее всего, вы добавили все зависимости Maven как сборку развертывания в ваш проект. Это копирует все записи пути классов Maven в каталог WEB-INF / lib. Откройте файл .classpath (в корне вашего проекта), и вы, вероятно, найдете следующий XML:
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
Это означает, что нужно копировать КАЖДЫЙ файл .jar, который в этом случае становится проблемой.
Обновление проекта должно удалить блок XML выше и явно перечислить файлы JAR.
Итак, если вы снова откроете .classpath, вы увидите это вместо этого:
<classpathentry kind="var" path="M2_REPO/com/google/code/gson/gson/2.2.1/gson-2.2.1.jar" sourcepath="M2_REPO/com/google/code/gson/gson/2.2.1/gson-2.2.1-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/javax/servlet/jsp/jsp-api/2.1/jsp-api-2.1.jar" sourcepath="M2_REPO/javax/servlet/jsp/jsp-api/2.1/jsp-api-2.1-sources.jar"/>
...
Это для пути к классам, который вам все еще нужен, но он убрал зависимость для копирования их в lib. Вместо этого, если вы откроете .settings / org.eclipse.wst.common.component /, вы увидите, что JAR-файлы теперь явно перечислены:
<dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/com/google/code/gson/gson/2.2.1/gson-2.2.1.jar">
<dependency-type>uses</dependency-type>
</dependent-module>
И вы заметите, что jsp-api-2.1.jar теперь отсутствует. Примените ту же логику к другим файлам JAR.
Кто-нибудь знает, как сделать это автоматически?