it-swarm.com.ru

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

Я использую Maven для создания динамического веб-приложения в Eclipse. Я добавил несколько папок, таких как src/test/Java и src/test/resources. Также я изменил библиотеку в Java Build Path, чтобы получить JavaSE-1.7. Это все хорошо до здесь.

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

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

305
EdgarZeng

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

299
Sydney

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

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

А потом:

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

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

561
enkor

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

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

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

159
pagurix

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

40
Adrian Ber
  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> Обновить проект> выберите проект и нажмите «ОК».

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

34
aabarbosa

Удалять 

.settings 
.classpatch 
.projejct 
target

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

21
Pintér Tamás

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

  1. Измените 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 и выберите, каким он должен быть.

 enter image description here

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

 enter image description here

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

 enter image description here

  1. На этом этапе я все еще не мог изменить Dynamic Web Module; 

Вместо того, чтобы изменить это:

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

б) применить

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

 enter image description here

После подачи заявки и проверки еще раз:

 enter image description here

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

19
Witold Kaczurba

Щелкните правой кнопкой мыши на проекте Свойства ; в Project Facets , отмените выбор Динамический веб-модуль (версия должна быть 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 -> Обновить проект .

15
henry ren

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

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

Откройте файл web.xml из структуры проекта Http: //Java.Sun.com/xml/ns/javaee/web-app_3_0.xsd " Version =" 3.0 "> Веб-приложение Servlet 3.0 .__ ,

и обновите файл web.xml например change version = "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

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

6
Siddaram

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

6
sunny

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

ПРОБЛЕМА

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

РЕШЕНИЕ 

  1. Перейдите в местоположение вашего проекта (напр. -D:/maven/todo)
  2. перейти в папку .setting
  3. проверьте этот файл: org.Eclipse.wst.common.project.facet.core.xml
  4. откройте файл и измените свойство «jst.web» с 2.3 на 3.0 и сохраните
  5. Щелкните правой кнопкой мыши по проекту, обновите проект и обновите maven. 
  6. Готово!!!....
4
chhaya Joshi

У меня была такая же проблема: не помогло редактирование файла 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-> Обновить проект и после этого вы можете изменить версию сервлета в свойствах-> фасеты проекта-> Версия динамического веб-модуля или, как было написано ранее, вручную отредактировав org.Eclipse.wst.common.project.facet.core. XML в папке .settings вашего проекта.

3
troy

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

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

<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. Теперь все работает чудесно.

2
Ryan J. McDonough

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

2
Nagababu

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

2
keiki

Если ответ Сиднея по-прежнему не помогает, попробуйте ниже .. После ответа Сиднея перейдите в «Свойства»> «Фасеты проектов», отмените выбор «Динамический веб-модуль», а затем измените версию в соответствии с вашим файлом 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>

1
punkck

Мое решение проблемы, которое не позволило мне изменить версию фазового модуля Dynamic Web Module в Eclipse (Mars):

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

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

Ниже приведены краткие шаги.

  1. Установите уровень соответствия компилятора.
  2. Обновить фасет проекта
  3. Обновить установленную JRE из настроек 
  4. Добавление конфигурации в pom.xml для использования Java 1.7 и, наконец,
  5. обновление проекта от Maven.
1
Md Faisal

Для веб-проекта 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) мавен: 

<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

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

1
Tiina

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

0
Thomás Preis

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

0
Sheetal

Обновление maven или повторный импорт проекта не помогли. @ Сидни ответ правильный; Кроме того, я должен воссоздать проект в другом рабочем пространстве, как сказано в JavaServer Faces 2.2 требует Dynamic Web Module 2.5 или более поздней версии

0
kashili kashili

Мой был 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...

0
Amin Sh

У меня был тот же симптом с другим лечением. Я пытался обновить свое веб-приложение JSF 2.2.4/Spring 3.0 до JSF 2.3, чтобы использовать новые возможности веб-сокетов JSF, и Eclipse (фактически STS) не будет взаимодействовать. В аспектах проекта Eclipse 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 в Facets Project, и проект скомпилирован и нормально работает на Tomcat 9.0.8. Тем не менее, Project Facets по-прежнему предупреждает: «Не удалось найти реализацию версии 2.3 фасета проекта jst.jsf. Функциональность будет ограничена». Я подозреваю, что это просто означает, что автозаполнение и другие удобства Eclipse не будут доступны, потому что он не может найти реализацию JSF 2.3, объявленную в моем POM.

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

0
snakedog

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

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

0
Hari

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

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

Проигнорируйте ошибки, мы восстановим это позже. 

Зайдите в свойства проекта -> фасеты проекта и установите нужную версию Dynamic Web Module. Затмение теперь позволяет сохранять. 

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

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

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

Готово.

0
Adam

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

0
Vaibs

Эта проблема с версией правой кнопкой мыши на проекте-> свойства-> Фасеты проекта-> правой кнопкой мыши на Dynamic Web Module-> разблокировать его-> снять отметку-> выбрать версию 2.5-> Применить-> Обновить maven

0
Ravi Kumar Ravanam