Я использую maven для создания динамического webapp в Eclipse. Я добавил несколько папок, например src/test/java
и src/test/resources
. Также я изменил библиотеку в Java Build Path, чтобы получить JavaSE-1.7. Здесь все ОК.
Когда я попытался изменить динамический веб-модуль Facec проектов, что-то пошло не так. Я изменил Java на 1.7 в одном и том же месте. И он все еще сказал мне, не может изменить версию факела проекта Dynamic Web Module до 3.0.
Я изменил все, что повлияло бы на изменение, которое я думаю.
Я обновил свой 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 → Обновить проект...
Другой способ - отредактировать сам файл конфигурации фасет проекта: org.eclipse.wst.common.project.facet.core.xml
Измените версию динамического веб-модуля в этой строке на 3.0 - <installed facet="jst.web" version="2.5"/>
И затем:
Вы найдете этот файл в каталоге .settings
в проекте Eclipse.
Я думаю, у меня была такая же проблема, как и вы. у моего web.xml была версия 2.5, в то время как проект имел (щелкните правой кнопкой мыши по Project- > Properties- > Progect Facets- > ) Dynamic Web Module 2.3. Хотя я пытался изменить версию с 2.3 до 2.5, ECLIPSE не разрешала этого. Решение. Я удалил галочку под заголовком "Динамический веб-модуль", я сохранил, и у меня был обновленный проект. Автоматическое повторное пробуждение входит в поле с правильной версией. Я использую Eclipse Kepler.
Надеюсь, что это полезно.
p.s.
посмотрите на комментарии Джонатана чуть ниже, очень полезно.
У меня была такая же проблема, и я даже попытался удалить проект и добавить его снова. В чем заключалась попытка удалить каталог .settings
.
Удалить
.settings
.classpatch
.projejct
target
и снова импортировать проект maven.
Что сработало для меня:
В вашем 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 и выберите, что должно быть.
Вместо изменения:
a) снимите динамический веб-модуль
b) применить
c) снова проверьте его. Должна быть установлена новая версия 3.0. **
После повторного применения и проверки:
Надеюсь, что это поможет.
Щелкните правой кнопкой мыши проект → Свойства; в Границы проекта, снимите выделение Динамический веб-модуль (версия должна быть 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 → Обновить проект.
Открыть файл 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>
Измените версию, подобную этой <installed facet="jst.web" version="3.1"/>
Только это сработало со мной.
пожалуйста, откройте представление "Навигатор" и выполните следующий шаг.
Лучшие и простые шаги для меня решены 1) Свойства → Границы проекта → Снимите отметку с отметки флажка Динамический веб-модуль → Применить 2) Теперь измените на желаемую версию Apply 3) Установите флажок Динамический веб-модуль. - Теперь ваши сделаны -
Откройте 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. Окно > Показать вид > Другое > Общие > Навигатор
В каталоге проекта есть папка .settings
Измените версию динамического веб-модуля в этой строке на 2.5 4. Измените версию Java в этой строке до 1,5 или выше
Теперь обновите свой проект и настройте его на своем сервере.
Соблюдайте блог для решения http://scrapillars.blogspot.in/2014/02/how-to-change-project-facet-in-eclipse.html
Решение создается с иллюстрациями изображений
Это еще один способ решить эту проблему (проверьте это, надеясь, что это поможет вам решить вашу проблему)
ПРОБЛЕМА
Невозможно изменить версию динамического веб-модуля фасет проекта с 2.3 до 3.0
РЕШЕНИЕ
У меня была такая же проблема, удалив папку .settings, разрешив проблему
Трюк 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. Теперь все работает чудесно.
В моем случае на web.xml ссылался dtd. После того, как я изменил это на xsd-ссылку, как тот, который был отправлен Сиднеем, он работал.
Для веб-проекта 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, какая версия является хорошей записью.
Я попробовал много ответов здесь, но никто из них не работал у меня. Затем я нашел статью о своей проблеме здесь. Я тоже думал об этом.
Ниже приведены краткие инструкции.
Если ответ Сиднея по-прежнему не поможет, попробуйте ниже. После того, как вы ответили Сидней, перейдите в "Свойства" > "Границы проектов", чтобы отменить выбор динамического веб-модуля, а затем измените версию в соответствии с вашим 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>
Мое решение проблемы, которая не позволила мне изменить версию фасет проекта Динамический веб-модуль в Eclipse (Mars):
обновление maven работало для меня
выберите проект, затем нажмите ALT + F5, затем выберите проект, нажмите ok
Я решил проблему с помощью изменяя web.xml с правильной версией, местоположениями xsd и изменением org.eclipse.wst.common.project.facet.core.xml с правильную версию и сделать обновление maven.
Шахта была 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...
Эта проблема. С правой кнопкой мыши по проекту- > properties- > Fac Facets- > щелкните правой кнопкой мыши на Dynamic Web Module- > unlock it- > uncheck- > выберите 2.5 version- > Apply- > Обновить maven
Это вариант ответа pagurix, но с использованием Eclipse Mars.
Измените файл web.xml на web.bak
Игнорируйте ошибки, мы будем их регенерировать дальше.
Перейдите в свойства проекта → грань проекта и установите версию динамического веб-модуля для того, что вам нужно. Eclipse теперь позволяет вам сохранять.
Теперь щелкните правой кнопкой мыши проект. Выберите Инструменты Java EE → Создать дескриптор дескриптора развертывания.
Это создает новый web.xml с требуемой версией.
Откройте новый web.xml и скопируйте его через заголовок XML и полный тег для открытия веб-приложения на свой оригинальный web.bak, удалите новый web.xml и переименуйте web.bak обратно в web.xml.
Готово.
Откройте файл org.eclipse.wst.common.project.facet.core.xml и измените версию jst.web на 3.0. Также обновите web.xml до версии 3.0. Сохраните и обновите проект. Надеюсь это поможет. Я использую Eclipse Juno
У меня была такая же проблема, редактирование 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 вашего проекта.
Выполнение обновления maven или реимпорт проекта не помогло. @Sydney ответ прав; кроме того, мне нужно воссоздать проект в другом рабочем пространстве, как сказано в JavaServer Faces 2.2 требует динамического веб-модуля 2.5 или более нового