JavaServer Faces 2.2 требует динамического веб-модуля 2.5 или новее
Я пробовал несколько вещей, но эта проблема все еще сохраняется. Я использую Eclipse Kepler. Я получаю следующую ошибку при импорте проекта Maven
JavaServer Faces 2.2 не может быть установлен: одно или несколько ограничений не были выполнены
JavaServer Faces 2.2 требует Dynamic Web Module 2.5 или новее
1) Я пробовал несколько вещей, упомянутых в Маркере конфигурации Java EE Maven с Java Server Faces 1.2, но безуспешно. 2) Также я вошел в .settings и изменил org.eclipse.wst.common.project.facet.core.xml и изменил jst.web так, чтобы он указывал на версию 2.5 или 3.0; но я получаю некоторые другие ошибки.
Я пытаюсь заставить примеры Sencha GXT работать в сборке maven/eclipse на основе http://neiliscoding.blogspot.ie/2012/05/how-to-setup-examples-for-use-in-gxt-3.html и Наличие этого javaserver сталкивается с проблемой в затмении. Вот мой pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<!-- POM file generated with GWT webAppCreator -->
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>xx</artifactId>
<groupId>ss</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>guis</artifactId>
<packaging>war</packaging>
<name>GWT Maven Archetype</name>
<properties>
<!-- Convenience property to set the GWT version -->
<gwtVersion>2.5.1</gwtVersion>
<!-- GWT needs at least java 1.5 -->
<webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.google.gwt.inject</groupId>
<artifactId>gin</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-servlet</artifactId>
<version>${gwtVersion}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId>
<version>${gwtVersion}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-dev</artifactId>
<version>${gwtVersion}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>
<classifier>sources</classifier>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.sencha.gxt</groupId>
<artifactId>gxt-chart</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>com.sencha.gxt</groupId>
<artifactId>gxt</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>com.sencha.gxt</groupId>
<artifactId>uibinder-bridge</artifactId>
<version>2.4.0</version>
</dependency>
</dependencies>
<build>
<!-- Generate compiled stuff in the folder used for developing mode -->
<outputDirectory>${webappDirectory}/WEB-INF/classes</outputDirectory>
<plugins>
<!-- GWT Maven Plugin -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>2.5.1</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test</goal>
<!-- <goal>i18n</goal> -->
<goal>generateAsync</goal>
</goals>
</execution>
</executions>
<!-- Plugin configuration. There are many available options, see gwt-maven-plugin
documentation at codehaus.org -->
<configuration>
<runTarget>guis.html</runTarget>
<hostedWebapp>${webappDirectory}</hostedWebapp>
<i18nMessagesBundle>com.harmonia.client.Messages</i18nMessagesBundle>
</configuration>
</plugin>
<!-- Copy static web files before executing gwt:run -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<phase>compile</phase>
<!-- <goals> <goal>exploded</goal> </goals> -->
</execution>
</executions>
<configuration>
<webappDirectory>${webappDirectory}</webappDirectory>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
Вот мой файл web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- <!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> -->
<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>GXT Created Web Application</display-name>
<!-- Default page to serve -->
<welcome-file-list>
<welcome-file>guis.html</welcome-file>
</welcome-file-list>
Как видите, я пробовал разные dtds в приведенном выше файле web.xml, но проблема все еще остается. Буду признателен за любые советы
Ответы
Ответ 1
Ваша проблема в том, что вы отметили ваш web.xml как совместимый с сервлета 2.3 (или, возможно, даже не тот, я не уверен, как интерпретируется ваш doctype в комментарии)
<?xml version="1.0" encoding="UTF-8"?>
<!-- <!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
и вам нужно, чтобы он был совместим с сервлетами, совместимыми с инструментами Eclipse 2.5.
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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_2_5.xsd">
(untested - скопирован из http://javahowto.blogspot.dk/2009/10/sample-webxml-servlet-25.html)
Возможно, вам понадобится заново создать проект Eclipse, чтобы получить изменения.
Ответ 2
Я тоже встречался с проектами Maven. Это то, что я должен был сделать, чтобы обойти проблему:
Сначала обновите свой web.xml, как упоминалось, Thorbjørn Ravn Andersen. Я использовал версию 3.0, как показано ниже:
<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>
Затем щелкните правой кнопкой мыши по вашему проекту и выберите "Свойства" → "Границы проекта"
Там вы увидите версию своего динамического веб-модуля. Это должно измениться с версии 2.3 или на любую версию до версии 2.5 или выше (я выбрал 3.0).
Однако для этого мне нужно было снять галочку в окне "Динамический веб-модуль" → "Применить", а затем сделать обновление Maven в проекте. Вернитесь в окно "Границы проекта", и он должен соответствовать вашей конфигурации web.xml - 3.0 в моем случае. Вы должны иметь возможность изменить его, если нет.
Если это не сработает для вас, попробуйте щелкнуть правой кнопкой мыши на Facamic Dynamic Web Module Facet и выбрать версию изменения (и убедитесь, что она не заблокирована).
Надеюсь, что это работает!
Ответ 3
У меня была такая же проблема, и в моем web.xml была версия 2.5, в то время как у проекта был (щелкните правой кнопкой мыши по Project- > Properties- > Progect Facets- > ) Dynamic Web Module 2.3. Хотя я пытался изменить версию с 2.3 до 2.5, ECLIPSE не разрешала этого.
Solution:
Я удалил галочку под заголовком Dynamic Web Module, который я сохранил, и у меня был Update Project. Автоматическое повторное пробуждение входит в поле с правильной версией.
Ответ 4
Решение, которое я нашел для этой проблемы,
1) Щелкните правой кнопкой мыши Project > Properties > Uncheck Dynamic Web Module > Apply and Close.
2) Щелкните правой кнопкой мыши по проекту > Maven > Обновить проект...
Ответ 5
Моим собственным решением было установить зависимость rignt в pom.xml.
Если проект объявлен как 3.1 Web Dynamic Project в фасетках, то зависимость java.servlet-api также должна быть версией 3.1.0 (или 3.1.x).
В моем случае я оставил версию 3.0.1, тем самым вызывая это конкретное сообщение об ошибке в представлении "Проблемы":
Невозможно изменить версию факела проекта Динамический веб-модуль до версии 3.0. Одно или несколько ограничений не были выполнены.
(конечно же, убедитесь, что ваш web.xml также должен быть 3.1).
Ответ 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>Archetype Created Web Application</display-name>
Ошибка сохраняется. Но после того, как были сделаны предложения по следующей ссылке, проблема была решена.
http://crunchify.com/how-to-fix-cannot-change-version-of-project-facet-dynamic-web-module-to-3-0-error-in-eclipse/
Ответ 7
Попробуйте это: удалите ваш проект в Eclipse. Удалите проект Eclipse, а не ваше приложение! Он должен исчезнуть из списка проектов. В проводнике Windows найдите каталог проекта и удалите каталоги .settings и target (если найдены) и удалите файлы .project и .classpath. Вернуться в Eclipse, импортировать существующий проект Maven. Это все!
Предполагая, что ваш web.xml имеет правильный заголовок <web-app> для вашей целевой версии JSF.
Ответ 8
** Откройте ваши проекты pom.xml и добавьте этот тег плагина
Наконец, щелкните правой кнопкой мыши на вашем проекте > Maven > Обновить проект...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
**
Ответ 9
Я столкнулся с этой проблемой, и ответ Торбьерна Равна Андерсена не помог, так как я уже был в Dynamic Web Module 2.5. Я столкнулся с этим вопросом еще несколько лет назад и сдался. Принятие решения о повторном исследовании того, что я впервые сделал, - это попробовать и удалить поддержку "Динамического веб-модуля", сняв флажок, но эй, он заблокирован? Поэтому я разблокировал его и отключил/отключил его. Затем я разблокировал JavaServer Faces, не снял его, нажал применить - без взрыва! Скрестив пальцы, я снова проверил Динамический веб-модуль и установил его в 3.1. Затем я переустановил JavaServer Faces, установив его в 2.2. Clicked apply - no "big badda boom", это сработало - прибыль! Надеюсь, что это поможет кому-то еще с той же проблемой, также он не полагается на настройку XML файлов.
Примечание. Я также установил версию с диагональю java в 1.8, а также потребовал.
Ответ 10
Ни один из этих ответов не работал для меня, но я попытался удалить сервер, а затем повторно импортировать, он работал для меня просто отлично.
Ответ 11
Для меня ни один из предыдущих не работал.
Тогда я нашел эту ссылку:
https://crunchify.com/how-to-fix-cannot-change-version-of-project-facet-dynamic-web-module-to-3-0-error-in-eclipse/
для меня было почти так же, как описано в этой ссылке.
- Перейдите в рабочее место Eclipse
- Откройте файл /.settings/org.eclipse.wst.common.project.facet.core.xml.
- Измените версию для свойства jst.web до 2.5
- Вернуться в затмение
- Щелкните правой кнопкой мыши на Project
- Обновить
- Нажмите на проект
- Выберите Очистить
- Щелкните правой кнопкой мыши по названию проекта
- Нажмите на Maven
- Обновить проект
Проблемы ушли для меня