“JavaServer Faces 2.2 需要动态 Web 模块 2.5 或更高版本。”

Posted

技术标签:

【中文标题】“JavaServer Faces 2.2 需要动态 Web 模块 2.5 或更高版本。”【英文标题】:"JavaServer Faces 2.2 requires Dynamic Web Module 2.5 or newer." 【发布时间】:2019-10-20 08:55:08 【问题描述】:

我正在使用 Eclipse for Java EE 和 AWS Toolkit for Eclipse v2。我使用的是 macOS Mojave 版本 10.14.5。我已经安装了 Java 8。

我在第一次创建 AWS Java Web 项目时遇到错误,提示“无法安装 JavaServer Faces 2.2:未满足一个或多个约束”。和如此屏幕截图所示:

这里是 webproject01/pom.xml:

<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">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.amazonaws.beanstalk</groupId>
  <artifactId>webproject01</artifactId>
  <packaging>war</packaging>
  <version>1.0.0</version>
  <name>archetype-web-app Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>7.0</version>
    </dependency>

    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-ec2</artifactId>
    </dependency>
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-s3</artifactId>
    </dependency>
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-dynamodb</artifactId>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-bom</artifactId>
        <version>1.11.104</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
</project>

这里是 webproject01/bin/pom.xml:

<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">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.amazonaws.beanstalk</groupId>
  <artifactId>webproject01</artifactId>
  <packaging>war</packaging>
  <version>1.0.0</version>
  <name>webproject01 Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>webproject01</finalName>
  </build>
</project>

这是 web.xml 文件:

<!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 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">
  <display-name>Archetype Created Web Application</display-name>
</web-app>

我希望能够直接从 Eclipse 通过 AWS Elastic Beanstalk 将我的 AWS Java Web 项目部署到 AWS。

我查看了 stackoverflow 上的其他类似帖子并尝试了他们的解决方案,但没有一个有效。它们是较旧的帖子。

【问题讨论】:

不确定 AWS 工具包与此有什么关系,但您必须修复您的 pom.xml 以使用/包含高于 2.5 的 javax.servlet 版本。可能应该在这里发布。如果您没有 pom.xml,那么您需要编辑项目属性,但是从合理的 maven 原型开始会更好。 @K.Nicholas 我已经按照与此类似的其他帖子的指示进行了尝试。看来我可能需要了解更多关于 Maven 的信息。我什至不知道原型是什么意思。我只是按照说明将 Eclipse for Java 与 AWS Toolkit 结合使用。 @K.Nicholas 我只是将 pom.xml 文件放在原始帖子中。那是在我尝试在其中添加其他内容以尝试解决问题之前。 好吧,您的 javaee-api 依赖项应该提供范围。我在 AWS-Eclipse-Toolkit 中没有看到任何关于 Java EE 的内容,所以我认为您正在尝试一些最终会继续给您带来麻烦的东西。如果您想玩云和 Java EE,我建议您在 openshift.com 上开设一个免费帐户并在那里玩。它将非常面向 Java EE。 第二个 = 提供的范围。 【参考方案1】:

也许有人会有用。

如果您使用的是 JBoss 工具,那么不要为项目设置 JSF 方面

Properties -> Project Facets -> JavaServer Faces (2.3)

最好使用其他选项:

Properties -> JBoss Tools Knowledge Base -> JBoss Tools Knowledge Base Support

如果启用此选项,则 Xhtml (JSF) 页面的 Eclipse 自动完成(内容辅助)将正常工作。

【讨论】:

【参考方案2】:

您需要升级您的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>

您当前是说您的网络应用程序是 servlet 2.3 版应用程序。

【讨论】:

以上是关于“JavaServer Faces 2.2 需要动态 Web 模块 2.5 或更高版本。”的主要内容,如果未能解决你的问题,请参考以下文章