Невозможно изменить версию факела проекта Динамический веб-модуль до 2,5

Я унаследовал веб-приложение Java от другой компании. Я пытаюсь загрузить его в Eclipse (через проект Import Maven) и получить сообщение об ошибке "Невозможно изменить версию факела проекта Dynamic Web Module до 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, например?)

Ответ 1

короткая версия

Попробуйте следующее:

  • Отмените выбор динамического веб-модуля в фасетках проекта. Щелкните правой кнопкой мыши Project → preferences → Fac Facets
  • Затем запустите Maven → Обновить проект.

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

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

Таким образом, при запуске 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" >

У меня возникла ошибка "Невозможно изменить версию факела проекта Dynamic Web Module до 2.5."

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

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

Eclipse Project Facets Dynamic Web Module

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

Servlet-Api included in libraries

Ответ 3

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

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

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

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

Ответ 4

Откройте представление "Навигатор" ( "Окно" > "Показать вид" > "Прочее" > "Общие" ) и найдите в своем проекте папку .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″/>.

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

Ответ 5

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

Что мне помогло, было одно изменение числа в may 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>

TO:

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

И затем перейдите в свойства → Границы проекта → Снимите отметку с динамического веб-модуля - > OK

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

Ответ 6

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

Изменить заголовок в моем 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 → Обновить проект

Ответ 7

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

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

Ответ 8

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

xsi:schemaLocation="http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/web-app_3_0.xsd"

Ответ 9

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

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

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

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