【问题标题】:web app web.xml error [duplicate]Web应用程序web.xml错误[重复]
【发布时间】:2011-09-30 00:59:09
【问题描述】:

我在 Eclipse 中开发的 GWT 应用程序出现错误。它在web.xml 文件中。这是错误:

The content of element type "web-app" must match "(icon?,display-   name?,description?,distributable?,context-
     param*,filter*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*,welcome-
     file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,security-constraint*,login-config?,security-
     role*,env-entry*,ejb-ref*,ejb-local-ref*)".

我看过很多关于这个的帖子,问题是文件元素的顺序,但这个修复对我不起作用(我也尝试将所有 <servlet-mapping> 标签放在相应的 @987654324 之后@,它也不起作用)

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

  <servlet>
    <servlet-name>dispatch</servlet-name>
    <servlet-class>com.yachtcloser.server.DispatchServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet>
    <servlet-name>upload</servlet-name>
    <servlet-class>com.yachtcloser.server.UploadServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet> 

  <servlet>
    <servlet-name>download</servlet-name>
    <servlet-class>com.yachtcloser.server.DownloadServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet>
    <servlet-name>login</servlet-name>
    <servlet-class>com.yachtcloser.server.LoginServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>dispatch</servlet-name>
    <url-pattern>/dispatch.do</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>upload</servlet-name>
    <url-pattern>/upload.do</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>download</servlet-name>
    <url-pattern>/download.do</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>login</servlet-name>
    <url-pattern>/login.do</url-pattern>
  </servlet-mapping>

  <!-- Default page to serve -->
  <welcome-file-list>
    <welcome-file>Yc.html</welcome-file>
  </welcome-file-list>

</web-app>

是否有任何其他方法可以跟踪此错误;与此链接的其他文件?

【问题讨论】:

  • 从标题和标签中删除了 GWT,因为它与问题无关。
  • 您是否尝试过删除所有空格或在十六进制编辑器中检查文件中的隐藏字符?
  • 我试过没有用,但最终找到了下面提到的答案。

标签: servlets web.xml


【解决方案1】:

好吧,根据新格式的 DTD web-app 标签可能包含以下标签。 <!ELEMENT web-app (icon?, display-name?, description?, distributable?, context-param*, filter*, filter-mapping*, listener*, servlet*, servlet-mapping*, session-config?, mime-mapping*, welcome-file-list?, error-page*, taglib*, resource-env-ref*, resource-ref*, security-constraint*, login-config?, security-role*, env-entry*, ejb-ref*, ejb-local-ref*)>

上面提到的图标、显示名称、描述、可分发...等与它们在 DTD 文件中提到的顺序相同。

例如如果你把描述标签放在显示名称之前,它会报错。

【讨论】:

  • 我遇到了这个问题,多亏了你我解决了,问题是元素顺序不正确......
  • 剪切复制粘贴不是永久的解决方案,我选择了上面的那个。它起作用了,只是重新安排了 servlet 映射和侦听器的顺序。它解决了。
【解决方案2】:

我删除了文件并将旧文件中的文本粘贴到具有相同名称的新文件中,现在没有错误了。

【讨论】:

  • 奇怪但为我解决了问题。
  • 相同。奇怪,但也对我有用。
【解决方案3】:

仅供参考:SelectAll->Cut->Save->Paste->Save 也可以解决问题。可能是行尾字符问题。

【讨论】:

    【解决方案4】:

    我遵循了“复制所有”-“剪切”-“粘贴”-“保存”的建议,这似乎清除了信息。我发现在“粘贴”版本中,所有选项卡都已转换为空格。

    看来 Eclipse 中的 web.xml 验证器不喜欢选项卡。

    【讨论】:

    • 在 Eclipse 中,您还可以使用 CTRL+SHIFT+F 重新格式化代码(或转到 source > format)。这也应该可以清除任何格式问题。
    【解决方案5】:

    错误本身为您提供了线索。 web.xml 中元素的顺序应遵循错误中指定的顺序。

    <displayname>
    </displayname>
    <description>
    </description>
    

    .......像这样,元素应该按照错误中所说的顺序排列。

    【讨论】:

    • 这个答案似乎无关紧要,这个问题是 3 年前提出的,这个问题似乎与行尾或类似的东西有关。不是元素的顺序。
    • 它是相关的,而不是输入整个 web.xml。我刚刚给出了一个看法。我有同样的问题,在声明 content-param 时,我在 servlet-mapping 之后编写了它们,所以我得到了这个错误。更改顺序后,错误消失了。所以这可能是一个可能的原因。
    • 仅供参考,请参阅这篇文章的第一个答案。
    • 所以已经给出了答案,所以不再需要它:)
    • 我发布了我的经验,但我认为它对某些人来说是完整的。但你是说这不相关......
    猜你喜欢
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 2012-12-24
    • 2014-01-19
    • 2018-09-15
    相关资源
    最近更新 更多