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
  • Обновить проект

Проблемы ушли для меня