【问题标题】:web.xml is missing and <failOnMissingWebXml> is set to trueweb.xml 丢失并且 <failOnMissingWebXml> 设置为 true
【发布时间】:2023-03-21 09:20:02
【问题描述】:

考虑:

当我在Eclipse 中创建一个简单的Maven 项目时,我收到了这个错误:

web.xml 丢失,&lt;failOnMissingWebXml&gt; 设置为 真的

我该如何解决这个问题?

【问题讨论】:

  • 您需要添加maven-war-plugin。这是一个隐式插件,其中该配置属性的默认值为 true。您需要显式声明它并将配置属性设置为 false。查看更多here。或者你可以添加一个空的 web.xml

标签: eclipse maven jakarta-ee m2eclipse


【解决方案1】:

这是一个 Maven 错误。它表示它在您的项目中需要一个 web.xml 文件,因为它是一个 Web 应用程序,如 &lt;packaging&gt;war&lt;/packaging&gt; 所示。但是,对于最近的 Web 应用程序,web.xml 文件是完全可选的。 Maven 需要赶上这个约定。 将此添加到您的 maven pom.xml 以让 maven 赶上来,您无需将无用的 web.xml 添加到您的项目中:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
    </plugins>
</build>

这比添加一个空的web.xml 是一个更好的解决方案,因为这样您的最终产品会保持干净,您只需更改构建参数。

对于更多当前版本的 maven,您还可以使用较短的版本:

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>

【讨论】:

  • 这个答案比其他答案更符合逻辑。
  • 如果您使用的是 Servlet 3.0+ 环境并且有任何Interface WebApplicationInitializer 的实现,则此答案是正确的方法。这是解决这个问题的明智方法——在没有它的情况下添加web.xml 是没有意义的!
  • 这比创建一个空的 web.xml 更好
  • 即使没有 Maven 也可以工作 > 更新项目。所以不需要。
  • 请按照below 的建议考虑更新您的答案以获得更短的配置。包括&lt;properties&gt;&lt;failOnMissingWebXml&gt;false&lt;/failOnMissingWebXml&gt;&lt;/properties&gt; 就足够了,而不是更冗长的插件配置设置。
【解决方案2】:

你也可以这样做:

  1. Project Explorer中右键单击Deployment Descriptor
  2. 选择生成部署描述符存根

它会在src/main/webapp中生成WEB-INF文件夹和一个web.xml

【讨论】:

  • 我不建议将样板代码添加到代码中,因为您的构建工具会出错。
  • @MartijnBurger 你能告诉我们上述黑客可能产生的影响吗?如果可能的话,还可以添加一些其他替代方案吗? - 会帮助像我这样的新手程序员。谢谢。
  • 请参阅下面的答案以获取替代方案。上面的解决方案没有错,只是您应该始终努力使最终产品尽可能干净。使用上面的解决方案,您的最终产品将得到一个不必要的web.xml 文件。您应该改为在构建工具(即 maven)中解决此问题。
  • 您也可以参考:eggsylife.co.uk/2009/12/20/…
  • 这将在您的项目中添加不必要的文件,其他事情是 web.xml appprocah 是旧的。如果您想删除此错误,则只需强制更新 maven 错误就会消失
【解决方案3】:

如果 /src/main/webapp/WEB-INF 下已有 web.xml,但仍然收到错误“web.xml is missing and is set to true”,您可以检查是否包含 / src/main/webapp 在您的项目源代码中。

您可以按照以下步骤操作:

  1. 您可以通过右键单击您的项目并打开其属性对话框来检查这一点,然后打开“部署程序集”,您可以在其中添加文件夹 /src/main/webapp。保存设置,然后,
  2. 转到 Eclipse 菜单 Project -> Clean... 并清理项目,错误应该会消失。

(我用 Eclipse Mars 验证了这一点)

【讨论】:

  • 在“Eclipse Mars”下遇到了同样的问题,您描述的解决方案非常完美!谢谢
  • 对我不起作用...我已经有了这些文件夹,我什至尝试将 web.xml 设置为 false。它不工作....
【解决方案4】:

你也可以这样做,不那么冗长

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>

【讨论】:

  • 最优雅的解决方案恕我直言。请参阅doc(和一个旧的日食bug,它阻止了这个解决方案的工作,现在解决了)。
【解决方案5】:

如果您使用 Spring Tool Suite,Generate Deployment Descriptor Stub 选项将移至 Java EE Tools 下,因此您:

  1. 右键单击您的项目
  2. 选择 Java EE 工具
  3. 选择生成部署描述符存根选项

这将在 src/main/webapp/WEB-INF/ 文件夹中创建 web.xml 文件,当然还会从 Maven 的 pom.xml 文件中删除错误。

【讨论】:

    【解决方案6】:

    我也有同样的问题。经过学习和谷歌搜索,我已经解决了我的问题:

    右击项目文件夹,进入Java EE Tools,选择Generate Deployment Descriptor Stub。这将在文件夹src/main/webapp/WEB-INF 中创建web.xml

    【讨论】:

    • 我不建议将样板代码添加到代码中,因为您的构建工具会出错。
    【解决方案7】:

    Eclipse 识别出不正确的默认webapp 目录。 所以我们应该用maven-war-plugin明确设置。

    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.0.0</version>
          <configuration>
            <webappDirectory>src/main/webapp</webappDirectory>
          </configuration>
        </plugin>
      </plugins>
    </build>
    

    保存此设置后,如果将其删除,则永远不会发生错误。 (我无法解释为什么。)

    【讨论】:

      【解决方案8】:

      我遇到了同样的问题,即使我的 'src/main/webapp/WEB-INF/' 文件夹具有正确的 web.xml

      在我重新创建(maven->eclipse)配置后问题消失了 Maven build..我执行了mvn eclipse:clean eclipse:eclipse

      然后我使用Maven -&gt; Update Project 添加(eclipse->maven)插件特定选项。

      【讨论】:

      • 这里也一样,虽然我用了 git reset --hard HEAD
      • 谢谢,这对我也有帮助。右键 -> Maven -> 更新项目
      【解决方案9】:

      我只在 Eclipse 中遇到了这个问题,在 Maven 命令行中一切正常,并且我的 web.xml 文件存在。这是一个受到影响的成熟项目(已经在生产中部署)。我的问题与 eclipse 元数据有关。我的 .settings/ 文件夹中的一个文件存在问题,特别是 org.eclipse.wst.common.component 已更改。我能够将此文件恢复到之前的版本,从而解决了我的问题。

      请注意,榆次的回答对我不起作用,当我尝试点击eclipse属性中的Deployment Assembly时,出现“当前显示的页面包含无效值”的错误。

      【讨论】:

      • 我遇到了同样的情况,不得不从我的 .settings/ 文件夹中恢复 org.eclipse.wst.common.component 文件,我的项目现在可以工作了,显然组件的内容被删除了,所以它没有不是我的 web.xml 文件的路径。此外,当我尝试在 Eclipse 属性中打开部署程序集时,出现了同样的错误:“当前显示的页面包含无效值。”我发现这个答案有点晚了,但这就是我解决它的方法。顺便说一句,答案很好。
      【解决方案10】:

      对于存在 web.xml 的项目 Project-->Properties-->Deployment Assembly,在这里可以添加文件夹src/main/webapp。 保存更改。 清理项目以开始工作。

      对于不存在 web.xml 的项目 在 pom.xml 中的 properties 标签下将 failOnMissingWebXml 设置为 false。

      【讨论】:

        【解决方案11】:

        这样做:

        去并右键单击部署描述符,然后单击生成部署描述符存根。

        【讨论】:

          【解决方案12】:

          您需要将此标签添加到您的 pom.xml 中

           <properties>
              <failOnMissingWebXml>false</failOnMissingWebXml>
          </properties>
          

          【讨论】:

            【解决方案13】:

            请在 POM.XML 中的结束标记 之前添加以下 XML 代码

                        <properties>
                            <failOnMissingWebXml>false</failOnMissingWebXml>
                        </properties>
            

            这应该可以解决您缺少 WEB.XML 文件的错误。

            【讨论】:

              【解决方案14】:

              创建一个 web.xml 只是 elcipse 想要它是没有意义的,即使没有必要。如果您像 spring-boot 那样嵌入了 servlet conatiner 或没有 xml cfg,就会出现这种情况。 您只是在项目级别或全局的 Eclipse 中禁用 JavaEE(无用的东西)

              Eclipse/STS>Windows>Preferences>JavaEE>Doclet>Webdoclet> "uncheck" DeploymentDescriptor > OK
              

              【讨论】:

                【解决方案15】:

                -web/.setting&-admin/.setting

                中删除文件

                【讨论】:

                • 这个选项对我有用
                【解决方案16】:

                选择您的项目 并选择“部署描述符”选项 然后选择“生成部署描述符存根”

                【讨论】:

                  【解决方案17】:

                  步骤:选择您的项目并选择“部署描述符”选项,然后选择“生成部署描述符存根”工作正常。问题是我们并不总是需要 web.xml,所以最好在 pom.xml 后面加上 false

                  【讨论】:

                    【解决方案18】:

                    右击project --&gt; New --&gt; Other --&gt; Standard Deployment Descriptor(web.xml)

                    然后按下一步,它将创建WEB-INF 文件夹,其中包含web.xml 文件。

                    大功告成。

                    【讨论】:

                      【解决方案19】:

                      我的项目与战争无关,但同样的错误。我不得不从 eclipse 中删除项目,从项目文件夹中删除所有 eclipse 文件并重新导入 maven 项目。

                      【讨论】:

                        【解决方案20】:

                        在 src/webapp 中创建 WEB-INF 文件夹,然后在 WEB-INF 文件夹中包含 web.xml 页面

                        【讨论】:

                          【解决方案21】:

                          右击项目,进入Maven -> Update Project...,然后勾选Force Update of Snapshots/Releases,然后点击Ok 。完成了!

                          【讨论】:

                            猜你喜欢
                            • 2020-07-10
                            • 2018-11-21
                            • 2016-01-22
                            • 2019-02-13
                            • 2018-12-25
                            • 1970-01-01
                            • 1970-01-01
                            • 2011-04-02
                            • 1970-01-01
                            相关资源
                            最近更新 更多