【问题标题】:JavaServer Faces 2.2 requires Dynamic Web Module 2.5 or newerJavaServer Faces 2.2 需要动态 Web 模块 2.5 或更高版本
【发布时间】:2014-04-17 03:32:13
【问题描述】:

我尝试了一些东西,但这个问题仍然存在。我正在使用 Eclipse 开普勒。导入 maven 项目时出现以下错误

JavaServer Faces 2.2 无法安装:未满足一个或多个约束

JavaServer Faces 2.2 需要动态 Web 模块 2.5 或更新版本

1) 我尝试了Maven Java EE Configuration Marker with Java Server Faces 1.2 中提到的一些事情,但没有运气。 2)我也进入 .settings 并修改了 org.eclipse.wst.common.project.facet.core.xml 并修改了 jst.web 以指向 2.5 或 3.0 版本;但我遇到了一些其他错误。

我正在尝试使 Sencha GXT 示例在基于 http://neiliscoding.blogspot.ie/2012/05/how-to-setup-examples-for-use-in-gxt-3.html 的 maven/eclipse 构建中工作,并且让这个 javaserver 在 eclipse 中面临问题。 这是我的 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>

如你所见,我在上面的 web.xml 中尝试了不同的 dtds,但我仍然有问题。希望有任何提示

【问题讨论】:

    标签: eclipse maven jsf configuration


    【解决方案1】:

    我在 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>
    

    然后右键单击您的项目并选择 Properties -> Project Facets 在那里,您将看到您的动态 Web 模块的版本。这需要从 2.3 或其他版本更改为 2.5 或更高版本(我选择了 3.0)。

    但是,我必须取消选中 Dynamic Web Module -> Apply 的复选框,然后对项目执行 Maven 更新。返回到 Project Facets 窗口,它应该已经匹配您的 web.xml 配置 - 在我的例子中是 3.0。如果没有,您应该可以更改它。

    如果这对您不起作用,请尝试右键单击 Dynamic Web Module Facet 并选择更改版本(并确保它没有被锁定)。

    希望有效!

    【讨论】:

    • 感谢您发布此解决方案。它也对我有用!还有一个对 GWT 开发人员的警告:请记住,每当您调整 eclipse 对话框时,您的项目类路径将再次混乱(eclipse 会这样做,M2Eclipse 或 Mojo 插件),您将需要再次回到您的项目“构建路径”对话框(源选项卡)并确保以“../src/main/resources”结尾的条目具有“排除:(无)”,否则您的 [module].gwt.xml 文件将再次被 eclipse 变为“无法找到”并且东西将停止工作(即调试)
    • :* 这对我有用,并且可能为我节省了数小时的浪费时间。另外,给像我这样的 maven 新手提示:要更新 Maven,请右键单击您的项目并查找 maven 子菜单。在那里,您会找到一个运行更新的选项(对我来说是“更新项目”)。
    • 这也拯救了我的一天。技巧很容易错过 - 取消选中构面/动态网络模块框以便能够更改其版本,这并不完全直观。谢谢!
    • 只是给可能遇到此问题且此修复无效的其他人的说明。我在安装目录中有一个空间的通用 Eclipse Proton 安装进行了尝试。我重新安装了没有空间的 Eclipse EE 网络版并做了这个修复,它第一次工作。
    • 它适用于 AWS beanstalk eclipse 插件 :-) thx!
    【解决方案2】:

    您的问题是您已将 web.xml 标记为符合 servlet 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">
    

    并且您需要它至少兼容 servlet 2.5 才能使 Eclipse 工具正常工作。

    <?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">
    

    (未经测试 - 复制自 http://javahowto.blogspot.dk/2009/10/sample-webxml-servlet-25.html

    您可能需要重新创建 Eclipse 项目以获取更改。

    【讨论】:

    • 谢谢。在新工作区重新创建对我有帮助。尝试了一些东西,比如 maven 更新和将项目重新导入到同一个工作区(但这些没有帮助)
    • 为什么当我这样做时我得到这个异常:java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer ???
    • @It_Does_Not_Matter 使用 Glassfish。
    【解决方案3】:

    我有同样的问题,在我的 web.xml 中有 2.5 版,而项目有(右键单击项目-> 属性-> Progect Facets->)动态 Web 模块 2.3。尽管我试图将版本从 2.3 更改为 2.5,但 ECLIPSE 不允许这样做。

    Solution: 我删除了标题动态 Web 模块下的复选标记,我保存了更新项目。自动重新唤醒是输入正确版本的框。

    【讨论】:

      【解决方案4】:

      我为这个问题找到的解决方案是

      1) 右键单击​​项目>属性>取消选中动态 Web 模块>应用并关闭。

      2) 右键单击​​项目>Maven>更新项目...

      【讨论】:

      • 这对我有用,似乎是当前最干净的解决方案 - 我的 web.xml 中没有前面答案中提到的那些条目)
      【解决方案5】:

      我自己的解决方案是将 rignt 依赖项放在 pom.xml 中。

      如果项目在方面声明为 3.1 Web 动态项目,则 java.servlet-api 依赖项也必须是 3.1.0(或 3.1.x)版本。

      在我的情况下,我留下了 3.0.1 版本,因此在“问题”视图中引发了这个特定的错误消息:

      无法将项目构面动态 Web 模块的版本更改为 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 有正确的标题 到你的目标 JSF 版本。

          【讨论】:

            【解决方案8】:

            我遇到了同样的错误,我已解决如下:

            第一步:更新web.xml文件,添加如下代码

            <web-app 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"
                     version="3.1">
            </web-app>
            

            第 2 步:点击项目文件夹,然后选择 Properties,然后搜索 “Project Facets” .您需要取消选中“动态 Web 模块”,然后应用,然后将其关闭。 See Eclipse properties

            第 3 步:更新您的 Maven,然后就可以开始了。

            【讨论】:

              【解决方案9】:

              **打开你项目的 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>
              

              **

              【讨论】:

                【解决方案10】:

                我也遇到了这个问题 Thorbjørn Ravn Andersen 的回答没有帮助,因为我已经在 Dynamic Web Module 2.5 中了。几年前我遇到过同样的问题并放弃了。决定重新调查我最初所做的是尝试通过取消选中它来删除对“动态 Web 模块”的支持 - 但是,它被锁定了吗?所以我解锁它并禁用/取消选中它。然后我解锁了 JavaServer Faces,也取消选中它,单击应用 - 没有爆炸!然后我交叉手指重新检查动态 Web 模块并将其设置为 3.1。然后我重新检查了 JavaServer Faces 将其设置为 2.2。单击应用-没有“大坏蛋繁荣”,它起作用了-利润!希望这可以帮助其他有同样问题的人,它也不依赖于调整 XML 文件。

                请注意,我也确实将 java faceted 版本设置为 1.8 以及它是必需的。

                【讨论】:

                  【解决方案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
                  • 回到日食
                  • 右键单击项目
                  • 刷新
                  • 点击项目
                  • 选择清洁
                  • 右键单击项目名称
                  • 点击 Maven
                  • 更新项目

                  问题解决了

                  【讨论】:

                    【解决方案12】:

                    我遵循接下来的步骤。

                    右键单击项目 -> 属性 -> 项目构面。标记 Dynamic Web ModuleJavaServer Faces 并选择项目的版本。 (如果您收到消息 Cannot change version of project facet Dynamic Web Module 请按照下一个教程How to fix Cannot change version of project facet Dynamic Web Module

                    删除 web.xml 文件,然后右键单击项目 -> Java EE 工具 -> 生成部署描述符存根。 p>

                    从eclipse中删除项目(不要删除源),然后在项目根级别执行:

                    mvn eclipse:clean
                    mvn eclipse:eclipse
                    mvn clean install -X
                    

                    再次将项目导入为现有的 Maven 项目

                    我的 web.xml 看起来像这样:

                    <?xml version="1.0" encoding="UTF-8"?>
                    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                        xmlns="http://xmlns.jcp.org/xml/ns/javaee"
                        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
                        version="4.0">
                        <display-name>jsf-sample</display-name>
                        <welcome-file-list>
                            <welcome-file>index.html</welcome-file>
                            <welcome-file>index.htm</welcome-file>
                            <welcome-file>index.jsp</welcome-file>
                            <welcome-file>default.html</welcome-file>
                            <welcome-file>default.htm</welcome-file>
                            <welcome-file>default.jsp</welcome-file>
                        </welcome-file-list>
                    </web-app>
                    

                    【讨论】:

                      猜你喜欢
                      • 2019-10-20
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2013-04-14
                      • 2020-12-11
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多