Невозможно изменить версию факела проекта Dynamic Web Module до 3.0?

Я использую maven для создания динамического webapp в Eclipse. Я добавил несколько папок, например src/test/java и src/test/resources. Также я изменил библиотеку в Java Build Path, чтобы получить JavaSE-1.7. Здесь все ОК.

Когда я попытался изменить динамический веб-модуль Facec проектов, что-то пошло не так. Я изменил Java на 1.7 в одном и том же месте. И он все еще сказал мне, не может изменить версию факела проекта Dynamic Web Module до 3.0.

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

Ответ 1

Я обновил свой 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 → Обновить проект...

Ответ 2

Другой способ - отредактировать сам файл конфигурации фасет проекта: org.eclipse.wst.common.project.facet.core.xml

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

И затем:

  • Щелкните правой кнопкой мыши проект (на панели Project Explorer).
  • Выберите Maven > Обновить проект (или нажмите Alt+F5)

Вы найдете этот файл в каталоге .settings в проекте Eclipse.

Ответ 3

Я думаю, что у меня была такая же проблема, как и у вас. У моего web.xml была версия 2.5, в то время как у проекта был динамический веб-модуль (щелчок правой кнопкой мыши на Project-> Properties-> Project Facets->) 2.3.

Хотя я пытался изменить версию с 2.3 на 2.5, ECLIPSE не позволил. Решение: я снял флажок под заголовком Динамический веб-модуль, сохранил и обновил проект. Автоматическое повторное пробуждение входит в окно с правильной версией. Я использую Eclipse Kepler.

PS: посмотрите на комментарии Джонатана чуть ниже, очень полезно.

Ответ 4

У меня была такая же проблема, и я даже попытался удалить проект и добавить его снова. В чем заключалась попытка удалить каталог .settings.

Ответ 5

  1. Нажмите на папку вашего проекта.
  2. Перейти к окну> Показать вид> Навигатор
  3. Перейдите в Навигатор и раскройте папку .settings.
  4. Откройте файл org.eclipse.wst.common.project.facet.core.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <faceted-project>
      <fixed facet="wst.jsdt.web"/>
      <installed facet="jst.web" version="2.3"/>
      <installed facet="wst.jsdt.web" version="1.0"/>
      <installed facet="java" version="1.8"/>
    </faceted-project>
    
  5. Измените версию следующим образом: <installed facet="jst.web" version="3.1"/>

  6. Сохранить
  7. Просто обновите свой проект. Щелкните правой кнопкой мыши папку проекта> Maven> Обновить проект> выберите проект и нажмите "ОК".

Просто это сработало для меня.

Ответ 6

Удалить

.settings 
.classpatch 
.projejct 
target

и снова импортировать проект maven.

Ответ 7

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

  • Измените Java на 1.8 (или 1.7)

В вашем POM - вы должны установить плагин компилятора в версии 1.8 (или 1.7) в разделе <build>:

  <build>
    ...
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.6.0</version>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
          </configuration>
        </plugin>  
      </plugins>    
  </build>

Убедитесь, что изменение Java Build показывает 1.8. Если это не так - щелкните EDIT и выберите, что должно быть.

введите описание изображения здесь

  1. Изменить web.xml, поэтому 3.0 ссылается на версию и ссылку

введите описание изображения здесь

  1. Убедитесь, что Java установлен на 1.8 в графах проекта

введите описание изображения здесь

  1. На этом этапе я все еще не могу изменить динамический веб-модуль,

Вместо изменения:

a) снимите динамический веб-модуль

b) применить

c) снова проверьте его. Должна быть установлена ​​новая версия 3.0. **

введите описание изображения здесь

После повторного применения и проверки:

введите описание изображения здесь

Надеюсь, что это поможет.

Ответ 8

Щелкните правой кнопкой мыши проект Свойства; в Границы проекта, снимите выделение Динамический веб-модуль (версия должна быть 3.1) и снимите выделение JavaServer Faces (версия 2.2).

Измените это:

<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">

:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:javaee="http://xmlns.jcp.org/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">

Затем удалите префикс до param-name и т.д.

Наконец, Maven Обновить проект.

Ответ 9

пожалуйста, откройте представление "Навигатор" и выполните следующий шаг.

  • ( "Окно" > "Показать вид" > "Прочее" > "Общие" ) и найдите в своем проекте папку .settings, разверните ее и откройте файл "org.eclipse.wst.common.project.facet.core.xml"., сделайте следующие изменения и сохраните файл.
  • Измените версию динамического веб-модуля в этой строке на 2.5 -
  • Измените версию Java в этой строке на 1.5 или выше.

Ответ 10

Откройте web.xml из структуры проекта http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd "  версия =" 3.0" >   Веб-приложение Servlet 3.0

и обновить файл web.xml например, изменить версию = "2.5"

Также измените файл org.eclipse.wst.common.project.facet.core.xml из файла проекта .settings. Следуйте шагам 1. Окно > Показать вид > Другое > Общие > Навигатор

  1. В каталоге проекта есть папка .settings

  2. Измените версию динамического веб-модуля в этой строке на 2.5 4. Измените версию Java в этой строке до 1,5 или выше

Теперь обновите свой проект и настройте его на своем сервере.

Соблюдайте блог для решения http://scrapillars.blogspot.in/2014/02/how-to-change-project-facet-in-eclipse.html

Решение создается с иллюстрациями изображений

Ответ 11

Лучшие и простые шаги для меня решены 1) Свойства Границы проекта → Снимите отметку с отметки флажка Динамический веб-модуль → Применить 2) Теперь измените на желаемую версию Apply 3) Установите флажок Динамический веб-модуль. - Теперь ваши сделаны -

Ответ 12

Это еще один способ решить эту проблему (проверьте это, надеясь, что это поможет вам решить вашу проблему)

ПРОБЛЕМА

Невозможно изменить версию динамического веб-модуля фасет проекта с 2.3 до 3.0

РЕШЕНИЕ

  • Перейдите в свое местоположение проекта (пример: D:/maven/todo)
  • перейдите в папку настройки.
  • проверить этот файл: org.eclipse.wst.common.project.facet.core.xml
  • откройте файл и измените свойство "jst.web" с 2.3 до 3.0 и сохраните
  • Щелкните правой кнопкой мыши проект, обновите проект и обновите maven
  • Готово!!!....

Ответ 13

У меня была такая же проблема, редактирование web.xml, а также изменение файла в папке .settings не помогло. Мое решение состояло в том, чтобы напрямую подключить плагин maven для компилятора, чтобы использовать нужную версию java, отредактировав pom.xml:

  <build>
    ...
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
    </plugins>    
  </build> 

Теперь запустите проект Maven- > Update, после чего вы можете изменить версию сервлета в свойствах → факс проекта → версия динамического веб-модуля или, как написано ранее, вручную, отредактировав файл org.eclipse.wst.common.project.facet.core.xml в папке .settings вашего проекта.

Ответ 14

В моем случае на web.xml ссылался dtd. После того, как я изменил это на xsd-ссылку, как тот, который был отправлен Сиднеем, он работал.

Ответ 15

Трюк web.xml работает, потому что теперь вы прямо указываете WTP, что используете конкретную версию сервлета, независимо от того, что поддерживает контейнер.

В моем случае я использую конфигурацию аннотаций в проекте Maven, и у меня нет файла web.xml. Оказывается, в отсутствие web.xml WTP ищет ваши зависимости от Maven, чтобы определить, какую версию Servlet использовать. В моем случае я определил следующее:

<dependency>
  <groupId>javax</groupId>
  <artifactId>javaee-api</artifactId>
  <version>7.0</version>
  <scope>provided</scope>
</dependency>

Изменение этого параметра на 6.0 устранило проблему, и теперь он использует Servlet 3.0 вместо 3.1, который по умолчанию используется для JavaEE 7. Поскольку мне пришлось перейти с Tomcat 8 на Tomcat 7, Tomcat 7 поддерживает только веб-профиль JavaEE 6. Теперь все работает чудесно.

Ответ 16

У меня была такая же проблема, удалив папку .settings, разрешив проблему

Ответ 17

Мое решение проблемы, которая не позволила мне изменить версию фасет проекта Динамический веб-модуль в Eclipse (Mars):

  • Отключить природу Maven
  • Убедитесь, что пространства имен web.xml указывают на правильную версию
  • Восстановить Maven Nature
  • Maven "Обновить проект (или нажать Alt + F5)

Ответ 18

Если ответ Сиднея по-прежнему не поможет, попробуйте ниже. После того, как вы ответили Сидней, перейдите в "Свойства" > "Границы проектов", чтобы отменить выбор динамического веб-модуля, а затем измените версию в соответствии с вашим web.config и затем выберите еще раз. Применить > Сохранить Затем обновите Maven.

web.xml

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:web="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="Web_App_1" version="3.1">

<display-name>JavaServerFaces</display-name>

<!-- Change to "Production" when you are ready to deploy -->
<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
</context-param>

<!-- Welcome page -->
<welcome-file-list>
    <welcome-file>jsfs/hello.xhtml</welcome-file>
</welcome-file-list>

<!-- JSF mapping -->
<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<!-- Map these files with JSF -->
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>jsfs/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

Ответ 19

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

Ниже приведены краткие инструкции.

  • Установить уровень соответствия компилятора.
  • Обновить грань проекта
  • Обновление установленных JRE из настроек
  • Добавление конфигурации в pom.xml для использования java 1.7 и, наконец,
  • обновление проекта от Maven.

Ответ 20

Для веб-проекта maven eclipse изменение версии динамического веб-модуля необходимо проверить на три места. Если вы используете eclipse и после того, как вы проверили следующее: 1) 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">

2) maven:

<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.0.1</version>
      <scope>provided</scope>   ## ensure you have tomcat 7 not other version
</dependency>

<plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.0</version>
      <configuration>
            <source>1.7</source> ## at least 6
            <target>1.7</target>
      </configuration>
</plugin>

3) путь сборки eclipse и версия компилятора 1.7

у вас все еще есть маркер ошибки на maven:

cannot change version of project facet dynamic web module to 3.0 one or more constrants have not been satisfied

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

Ответ 22

Откройте файл org.eclipse.wst.common.project.facet.core.xml и измените версию jst.web на 3.0. Также обновите web.xml до версии 3.0. Сохраните и обновите проект. Надеюсь это поможет. Я использую Eclipse Juno

Ответ 23

Это вариант ответа pagurix, но с использованием Eclipse Mars.

Измените файл web.xml на web.bak

Игнорируйте ошибки, мы будем их регенерировать дальше.

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

Теперь щелкните правой кнопкой мыши проект. Выберите Инструменты Java EE → Создать дескриптор дескриптора развертывания.

Это создает новый web.xml с требуемой версией.

Откройте новый web.xml и скопируйте его через заголовок XML и полный тег для открытия веб-приложения на свой оригинальный web.bak, удалите новый web.xml и переименуйте web.bak обратно в web.xml.

Готово.

Ответ 24

Эта проблема. С правой кнопкой мыши по проекту- > properties- > Fac Facets- > щелкните правой кнопкой мыши на Dynamic Web Module- > unlock it- > uncheck- > выберите 2.5 version- > Apply- > Обновить maven

Ответ 25

Шахта была Web Module 3.0 в web.xml, но в properties>Dynamic Web Module Она была на 3.1

Я изменил web.xml на это:

<?xml version="1.0" encoding="UTF-8"?>
<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_3_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">

после этого изменения сделайте: right click on project>Maven>Update Project...

Ответ 26

Я решил проблему с помощью изменяя web.xml с правильной версией, местоположениями xsd и изменением org.eclipse.wst.common.project.facet.core.xml с правильную версию и сделать обновление maven.

Ответ 27

обновление maven работало для меня

выберите проект, затем нажмите ALT + F5, затем выберите проект, нажмите ok

Ответ 28

У меня был тот же симптом с другим лечением. Я пытался обновить свое веб-приложение JSF 2.2.4/Spring 3.0 до JSF 2.3, чтобы использовать новые возможности веб-сокетов JSF, и Eclipse (фактически STS) не будет взаимодействовать. В Eclipse Project Facets JSF 2.3 никогда не становился доступным, пока я не отредактировал напрямую файл org.eclipse.wst.common.project.facet.core.xml, как указано в предыдущих ответах - максимальный уровень - 2,2.

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

В Eclipse я часто получал страшное предупреждение: "Изменение граненого проекта, когда реализации одного или нескольких установленных фасетов недоступны, может привести к повреждению проекта. Вы уверены, что хотите продолжить?" Это побудило меня делать более частые коммиты, но никакой коррупции не произошло.

  1. Обновите JDK с 1.7 до 1.8 в POM, компиляторе Eclipse и аспектах проекта Eclipse.
  2. Обновите следующие зависимости Maven:

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

    ... для:

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

... а также...

    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>2.2.4</version>
    </dependency>
    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <version>2.2.4</version>
    </dependency>

... для:

    <dependency>
        <groupId>javax.faces</groupId>
        <artifactId>javax.faces-api</artifactId>
        <version>2.3</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.faces</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>javax.enterprise</groupId>
        <artifactId>cdi-api</artifactId>
        <version>2.0</version>
    </dependency>

Мне пришлось обновить мои объявления пространства имен 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">

... для:

<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" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

Мне пришлось обновить Project Facets → Dynamic Web Module с 2.5 до 3.0. Я пробовал 3.1, но получил ошибки.

В этом процессе я часто получал сообщение об ошибке в заголовке этого поста "Невозможно изменить версию динамического веб-модуля фасета проекта на 3.0", и Eclipse отказалась скомпилировать проект или предложить JSF 2.3 в фасетах проекта. Когда я отредактировал файл org.eclipse.wst.common.project.facet.core.xml в соответствии с указаниями, ошибки исчезли, Eclipse предложил JSF 2.3 в аспектах проекта, и проект скомпилирован и нормально работает на Tomcat 9.0.8. Тем не менее, Project Facets по-прежнему предупреждает: "Не удалось найти реализацию версии 2.3 фасета проекта jst.jsf. Функциональность будет ограничена". Я подозреваю, что это просто означает, что автозаполнение и другие удобства Eclipse не будут доступны, потому что он не может найти реализацию JSF 2.3, объявленную в моем POM.

Надеюсь, это кому-нибудь поможет. Поиски в Google дали только этот пост Али Бассам и косвенно BalusC, который помог.

Ответ 29

У меня была та же проблема - я просто удалил проект из своего рабочего пространства, затем очистил "файлы/папки eclipse, например:.project,.settings и т.д.), Затем снова импортировал проект maven, он работал.

Ответ 30

Я получил эту ошибку, когда я пытался преобразовать обычный Java-проект в Maven Project.

Я определил версию компилятора Java, которая требуется для моего проекта. Для моего проекта минимальная версия Java - 1.8.

Понизив версию до уровня ниже 1.8 моя среда IDE начнет жаловаться на то, что она не распознает кучу импортированных библиотек, поэтому я определяю мою минимальную версию Java как 1.8

1. Right click your project
2. Go to Properties
3. Left hand-side panel, click "Project Facets"
4. For Java, set the version according to your minimum version

enter image description here

Теперь убедитесь, что версия компилятора Java использует ту же версию Java, что и та, которую вы указали в Project Facets.

1. Right click your project
2. Go to Porperties
3. Left hand-side panel, click "Java Compiler"
4. Make sure Java Compiler version is the same. 
5. If it is not the same, change the version. (Uncheck "Use compliance from execution environment' if needed to make the changes.

enter image description here

После внесения изменений ошибка должна быть устранена. Если ошибка все еще существует, щелкните правой кнопкой мыши проект → Maven → Обновить проект