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

329

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

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

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

EdgarZeng
источник
ХОРОШО. Я сожалею об этом. Архетип - это maven-archetype-webapp, когда я создаю проект New Maven, а динамический веб-модуль - 2.3 в аспектах проекта после того, как я создал проект. Я хочу изменить версию динамического веб-модуля на 3.0, и я получил сообщение «Невозможно изменить версию динамического веб-модуля фасета проекта на 3.0»
EdgarZeng
это сработало для меня: stackoverflow.com/questions/19661135/dynamic-web-module-3-0-3-1
Тити Вангса бен Дамхор
В Eclipse Kepler, когда я щелкаю правой кнопкой мыши на фасете «Динамический веб-модуль», отображается опция «Разблокировать». После разблокировки мне удалось сменить фасетную версию. только для информации.
Джонатан
Это ошибка для затмения?
CDT

Ответы:

311

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

Сидней
источник
64
Обновление web.xml у меня не сработало. Решение, данное @enkor, работает: stackoverflow.com/a/18632054/378633
jplandrain
5
Вот правильный заголовок для файла 3.1 web.xml <? Xml version = "1.0" encoding = "UTF-8"?> <Web-app xmlns: xsi = " w3.org/2001/XMLSchema-instance " xmlns = " xmlns.jcp.org/xml/ns/javaee " xsi: schemaLocation = " xmlns.jcp.org/xml/ns/javaee xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd " id = " WebApp_ID "version =" 3.1 ">
Якоб Александр Эйхлер
3
как насчет проектов без web.xml? :)
Ананд Рокзз
изменение атрибута версии на 3.0 у меня тоже не сработало
tequilacat
Если ни одно из приведенных выше и ниже решений, если не работает, любезно перейдите по этой ссылке на 100%, оно будет работать.
Raki
587

Другой способ - отредактировать сам файл конфигурации фасета проекта: 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.

Энкор
источник
3
Спасибо. На самом деле я думаю, что мы должны сделать что-то еще, как указано выше, изменить версию веб-модуля в файле web.xml, если нет, то версия «Дескриптор развертывания» не изменится на 3.0. И это ошибка в плагине Maven?
EdgarZeng
13
Похоже, что это единственный способ решить эту проблему, когда вы используете в своем проекте файл web.xml.
Шон Шервуд,
3
У меня уже было 3.0 в файле web.xml, и STS все еще не удалось обновить, и обновление mvn также не помогло. Этот метод работает, однако.
MiB
2
Это помогло, на самом деле перейдите на -> org.eclipse.wst.common.project.facet.core.xml -> удалить все записи -> maven update project.
Виртуальный
7
Вы можете найти файл org.eclipse.wst.common.project.facet.core.xml в папке .settings приложения / проекта.
Руши Шах
175

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

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

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

pagurix
источник
1
Отлично, это решило мою проблему, но не могли бы вы сказать мне, почему изначально не разрешалось устанавливать динамический модуль.
Суреш
26
@ Суреш, я думаю, что проблема, почему он не разрешал менять версию, заключается в том, что она заблокирована. Если щелкнуть правой кнопкой мыши фасет «Динамический веб-модуль», отобразится опция «Разблокировать». После разблокировки, отмены проверки фасета DWM, повторного применения фасета и выполнения обновления проекта maven ошибка исчезла.
Джонатан
2
+1. Без этого чрезвычайно важного пункта другие ответы здесь ни к чему. Только я думаю, что комментарии Джонатана должны быть включены в ответ.
Гангнус
1
+1 @Jonathan Твой совет сделал свою работу. Вы должны опубликовать это как ответ, и мы также должны поднять это до Затмения!
aksappy
В моем случае это работает, почему в pom веб-модуля была установлена ​​другая версия для веб-модуля Dnamic, так что это противоречит конфигурации проекта
ocrampico
49
  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> Обновить проект> выберите проект и нажмите «ОК».

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

aabarbosa
источник
43

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

Адриан Бер
источник
2
Я также должен был сделать это. Я использовал веб-проект Spring с конфигурацией на основе Java, поэтому обновление web.xml было невозможно для меня.
bcody
Почему это сработало после удаления .setting, пожалуйста, объясните
Абхиджит Чакра
Этот каталог .settings содержит много вещей, и, возможно, некоторые из них со временем изменились. Я не знаю точно, какая часть повлияла на это поведение, но это было похоже на перезагрузку. Ни один из других ответов не работал для меня, но этот. И, кажется, я был не единственным в этой ситуации.
Адриан Бер
Сработало у меня, у меня была такая ошибка: «Невозможно изменить версию EAR фасета проекта на 1.3.»
Джованни П.
Работал на меня! У меня была ошибка: «Невозможно изменить версию динамического веб-модуля фасета проекта на 3.0»
Anup Ghosh
24

Удалить

.settings 
.classpatch 
.projejct 
target

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

Пинтер Тамас
источник
Как мне снова импортировать проект Maven. Я новичок в этом.
Даниэль Брауэр
21

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

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

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

  1. Измените файл web.xml, чтобы в версии 3.0 и в ссылке была ссылка на версию 3.0.

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

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

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

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

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

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

б) применить

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

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

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

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

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

Витольд Качурба
источник
15

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

Генри Рен
источник
8

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

  1. (Окно> Показать представление> Другое> Общие) и найдите, что в вашем проекте есть папка .settings, разверните ее и затем откройте файл "org.eclipse.wst.common.project.facet.core.xml", сделайте ниже изменения и сохраните файл.
  2. Измените версию динамического веб-модуля в этой строке на 2.5 -
  3. Измените версию Java в этой строке на 1.5 или выше -.
ГАУРАВ КУМАР ГУПТА
источник
5
Вы забыли указать, какой вид следует выбрать в папке «Общие» в диалоговом окне «Показать вид». Это вид "Навигатор"?
Роберто Линарес
6

Откройте файл 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

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

Siddaram
источник
Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится.
Миха
Я внес изменения в файл pom.xml, как показано на crunchify.com/… . Однако этого было недостаточно. Я также должен был следовать рекомендации, чтобы открыть папку .settings и отредактировать файл или .eclipse.wst.common.project.facet.core.xml.
блэкджек
6

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

солнечно
источник
1
Работал хорошо, но каковы последствия этого?
sg28
4

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

ПРОБЛЕМА

Невозможно изменить версию динамического веб-модуля аспекта проекта с 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. Готово!!!....
чхайя джоши
источник
3

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

Райан Макдоноу
источник
3

У меня была такая же проблема: редактирование файла 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 вашего проекта.

тройская
источник
2

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

Keiki
источник
2

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

Nagababu
источник
1

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

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

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

punkck
источник
1

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

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

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

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

Я получил эту ошибку при попытке конвертировать обычный проект Java в проект Maven .

Я определил версию компилятора 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

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

Теперь убедитесь, что версия компилятора 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.

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

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

user3437460
источник
0

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

Sheetal
источник
0

Это вариант ответа Пагурикс, но с использованием 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

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

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

Gen
источник
0

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

Vaibs
источник
0

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

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

Хари
источник
0

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

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

snakedog
источник
0

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

Томас Прейс
источник