it-roy-ru.com

Невозможно изменить версию аспекта проекта Dynamic Web Module до версии 2.5.

Я унаследовал веб-приложение на Java от другой компании. Я пытаюсь загрузить его в Eclipse (с помощью Import Maven Project) и получаю сообщение об ошибке «Не удается изменить версию динамического веб-модуля аспекта проекта на 2.5».

Я немного ковыряюсь, и обнаруживаю, что файл web.xml начинается с 

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://Java.Sun.com/xml/ns/javaee" xmlns:web="http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">

и pom.xml определяет зависимость 

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>

но папка .settings содержит файл с этим

<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
  <fixed facet="wst.jsdt.web"/>
  <installed facet="Java" version="1.6"/>
  <installed facet="jst.web" version="3.0"/>
  <installed facet="wst.jsdt.web" version="1.0"/>
</faceted-project>

и я подозреваю, что 3.0, указанный здесь, конфликтует с 2.5, указанным в другом месте. Это может быть так? Есть ли способ, которым эта комбинация настроек НЕ может привести к ошибкам? (Старая версия Eclipse, например?)

32
joelt

укороченная версия

Попробуй это:

  • Отмените выбор Динамического веб-модуля в фасетах вашего проекта .Щелкните правой кнопкой мыши Проект -> Настройки -> Фасеты проекта
  • Затем снова запустите Maven -> Обновить проект.

Длинная версия

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

Таким образом, кажется, что когда вы запускаете Maven -> Update Project, m2e (я полагаю) ДОБАВЛЯЕТ динамический веб-модуль в аспекты проекта. Добавление является ключевым словом здесь. Поэтому, когда я вошел и обновил web.xml Из [...] http://Java.Sun.com/xml/ns/javaee/web-app_2_3.xsd "version = "2.3"> К [...] http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd "version =" 2.5 ">

Я получил сообщение об ошибке «Не удается изменить версию динамического веб-модуля фасета проекта на 2.5».

То же самое было верно для 3.0, когда я попробовал это.

Похоже, что m2e способен добавить это в ваш проект, но, как и в сообщении об ошибке, он не может изменить после его установки. Так что просто отмените выбор на странице фасетов проекта. Хит О.К. чтобы сохранить настройки и снова запустить Maven Update.

Eclipse Project Facets Dynamic Web Module

Вы не должны должны включить javax.servlet в свой файл pom.xml, если у вас есть добавленный фасет сервера (например, Tomcat).

Servlet-Api included in libraries

99
TheSporkboy

См. Не удается изменить версию фасета проекта Dynamic Web Module на 3.0?

Закройте проект и непосредственно обновите файл org.Eclipse.wst.common.project.facet.core.xml, расположенный в папке .settings проекта.

13
JackDev

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

В любом случае, для проектов Maven рекомендуется не фиксировать какие-либо метаданные Eclipse (т.е. .classpath, .project, .settings/) в SCM и разрешать m2e генерировать их при импорте.

Поэтому я бы рекомендовал скопировать структуру вашего проекта, удалить все метаданные Eclipse из копии и затем импортировать через m2e.

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

6
Harald Wellmann

Откройте представление навигатора («Окно»> «Показать представление»> «Другое»> «Общие») и найдите, что в вашем проекте есть папка .settings, разверните ее и откройте файл «org.Eclipse.wst.common.project.facet.core.xml. », Внесите следующие изменения и сохраните файл.

Измените версию динамического веб-модуля в этой строке на 2.5 - <installed facet=”jst.web” version=”2.4″/>

Измените версию JSF в этой строке на 2.0 - <installed facet=”jst.jsf” version=”1.1″/>

Измените версию Java в этой строке на 1.5 или выше - <installed facet=”Java” version=”1.5″/>.

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

3
Hatem Badawi

В моем случае я хотел изменить динамическую форму фасета с 2.3 на 3.1.

Что помогло мне было одно изменение номера в мае web.xml

От :

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://Java.Sun.com/dtd/web-app_2_3.dtd" >

<web-app  > 
  <display-name>Archetype Created Web Application</display-name>
</web-app>

ДО: 

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://Java.Sun.com/dtd/web-app_2_5.dtd" >

<web-app  > 
  <display-name>Archetype Created Web Application</display-name>
</web-app>

А затем перейдите в свойства -> Фасеты проекта -> Снимите флажок Динамический веб-модуль -> ОК

Обновленный проект Maven. 

2
CygiCoderJavaLerner

Это сообщение в блоге очень помогло мне: Как исправить Невозможно изменить версию фазового динамического веб-модуля фасета проекта на 3.0 Ошибка в Eclipse .

В этом посте объясняется, что, если щелкнуть правой кнопкой мыши> свойства> аспекты проекта> изменение версии Dynamic Web Module на правильную, не поможет, попробуйте следующее: Щелкните правой кнопкой мыши> properties> resources> и перейдите по адресу, который вы видите в части location. Откройте файл org.Eclipse.wst.common.project.facet.core и измените версию jst.web, как вам нужно. Обновить проект. Он должен работать :)

1
user1419243

Мое решение было:

Изменить заголовок в моем web.xml:

Я кладу:

<web-app xmlns="http://Java.Sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee 
          http://Java.Sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">
    <display-name>Servlet 3.0 Web Application</display-name>
</web-app>

а потом просто Maven -> Обновить проект 

1
Gere

вы должны изменить оба файла!

Первый шаг: закройте Eclipse

Второй шаг: измените метку фасета "jst.web" в Org.Eclipse.wst.common.project.facet.core.xml

И, наконец, измените версию xsd в web.xml

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

0
jirou

Обратите внимание, что текущее расположение схемы для веб-приложения: 

xsi:schemaLocation="http://www.Oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/web-app_3_0.xsd"
0
Mike V.C.

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

1- Измените настройку динамического веб-модуля в гранях проекта на последнюю версию 3.1.

2- Откройте файл web.xml проекта из .../web-app_2_5.xsd в .../web-app_3_1.xsd

3- Обновление проекта Maven

0
AlexH