web.xml丢失,并且<failOnMissingWebXml>设置为true


142

考虑:

在此处输入图片说明

当我在Eclipse中创建一个简单的Maven项目时,出现此错误:

web.xml丢失,<failOnMissingWebXml>并设置为true

我该如何解决这个问题?


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

Answers:


180

您也可以这样:

  1. 右键点击 部署描述符 中的 工程资源管理器
  2. 选择 生成部署描述符存根”

它将在src / main / webapp中生成WEB-INF文件夹,并在其中生成一个web.xml

在此处输入图片说明


39
我不建议将样板添加到代码中,只是因为您的构建工具给出了错误。
Martijn Burger

1
@MartijnBurger您能启发我们了解以上黑客的可能影响,如果可能,还添加其他替代方法吗?-会帮助像我这样的新手程序员。谢谢。
Sendhilkumar Alalasundaram '16

7
请参阅下面的替代方法。上面的解决方案没有错,只是您应该始终努力使最终产品尽可能清洁。使用上述解决方案,您的最终产品将带有不必要的web.xml 文件。您应该改为在构建工具(即maven)中解决此问题。
Martijn Burger


这将在您的项目中添加不必要的文件,而另一件事是web.xml approcah是旧的。如果您想删除此错误,则只需强制更新即可,Maven错误将消失
jitendra varshney

393

这是一个Maven错误。它表示期望在您的项目中有一个web.xml文件,因为它是一个Web应用程序,如所示<packaging>war</packaging>。但是,对于最新的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>

28
这个答案比其他答案更合乎逻辑。
smwikipedia

7
如果您在Servlet 3.0+环境中使用,并且Interface WebApplicationInitializer对此实现有任何实现,则这是正确的方法。这是解决此问题的明智方法-毫无意义地在没有web.xml采取措施的情况下添加步骤!
Geeb '16

4
与创建空的web.xml相比,这是一个更好的答案
dtortola

1
即使没有Maven>更新项目也可以使用。因此它是不需要的。
幸运

13
请考虑更新您的答案以缩短配置,如下所示。包括<properties><failOnMissingWebXml>false</failOnMissingWebXml></properties>足够的内容,而不是更详细的插件配置设置。
奥利维尔·卡柳克斯

32

如果您已经在/ src目录/主/ web应用/ WEB-INF的web.xml,但你仍然得到错误“的web.xml是失踪,被设置为true”,你可以检查是否已包括/ src目录/主/ web应用程序中您的项目源。

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

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

(我使用Eclipse Mars对此进行了验证)


在“ Eclipse Mars”下遇到了相同的问题,并且您所描述的解决方案非常完美!谢谢
Hartmut P.

不适用于我...我已经有了这些文件夹,甚至尝试设置web.xml缺少false。它不工作....
Baradwaj Aryasomayajula

19

如果您使用Spring Tool Suite,则“生成部署描述符存根”的选项已移至Java EE Tools下,因此您:

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

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

在此处输入图片说明


16

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

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


3
我不建议将样板添加到代码中,只是因为您的构建工具给出了错误。
Martijn Burger

16

您也可以这样做

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

最优雅的解决方案恕我直言。请参阅doc(以及一个导致该解决方案无法正常运行的旧的Eclipse 错误,现已解决)。
奥利维尔·卡柳克斯

9

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>

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


3

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

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

然后我曾经Maven -> Update Project添加(eclipse-> maven)插件特定选项。


尽管我使用git reset --hard HEAD
Markus Barthlen'9

谢谢,这对我也有帮助。右键单击->
Maven-

2

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

请注意,Yuci的答案对我不起作用,当我尝试在eclipse属性中单击Deployment Assembly时,出现一个错误,指出“当前显示的页面包含无效值”。


我遇到了同样的情况,不得不从.settings /文件夹中还原org.eclipse.wst.common.component文件,并且我的项目现在可以正常工作,显然该组件的内容已删除,因此它没有通往我的网站的路径。 xml文件。另外,当我尝试在eclipse属性中打开Deployment Assembly时,出现了相同的错误:“当前显示的页面包含无效值。” 我发现这个答案有点晚了,但这就是我解决的方法。好答案顺便说一句。
豪尔赫·瓦尔德斯

2

对于存在web.xml的项目 项目->属性->部署程序集,您可以在其中添加src / main / webapp文件夹。保存更改。清理项目开始。

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


1

做这个:

转到并右键单击Deployment Descriptor,然后单击Generate Deployment Descriptor Stub。


0

只是不需要就创建web.xml是没有意义的,即使没有必要。如果您嵌入了servlet容器,或者像spring-boot一样没有xml cfg,就属于这种情况。在项目级别或全球范围内,您只能在Eclipse中食用JavaEE(无用的东西)

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


0

步骤:选择项目并选择“ Deployment Descriptor”选项,然后选择“ Generate Deployment Descriptor stub”,效果很好。问题是我们并不总是需要web.xml,因此最好将false附加到pom.xml。


0

右键点击 project --> New --> Other --> Standard Deployment Descriptor(web.xml)

1个

然后按“ 下一步”,它将创建WEB-INF一个web.xml包含文件的文件夹。

2

完成了。


-1

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


-1

-web / .setting& -admin / .setting中删除文件

1个


-1

右键单击该项目,转到Maven->更新项目...,然后检查“ 强制更新快照/版本”,然后单击“ 确定”。完成!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.