maven web.xml 元素类型“web-app”必须由匹配的结束标签“</web-app>”终止

Posted

技术标签:

【中文标题】maven web.xml 元素类型“web-app”必须由匹配的结束标签“</web-app>”终止【英文标题】:maven web.xml The element type "web-app" must be terminated by the matching end-tag "</web- app>" 【发布时间】:2020-09-05 00:16:19 【问题描述】:

Eclipse Java EE IDE Apache Tomcat v9.0 我通过 New->Maven Project 创建了项目,并选择 Maven 原型为 maven-archetype-webapp。 web.xml 内容如下。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
    <display-name>WebProject</display-name>
    <servlet>
        <servlet-name>LoginServlet</servlet-name>
        <display-name>LoginServlet</display-name>
        <servlet-class>com.wise.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/LoginServlet</url-pattern>
    </servlet-mapping>
</web-app>

eclipse中的项目结构如下

有两个错误: 元素类型“web-app”必须由匹配的结束标记“”终止。 cvc-complex-type.2.4.a:发现以元素“显示名称”开头的无效内容。 '"http:// 之一 java.sun.com/xml/ns/javaee":servlet-class, "http://java.sun.com/xml/ns/javaee":jsp-file, "http://java.sun.com/ xml/ns/javaee":init-param, "http://java.sun.com/xml/ns/javaee":load-on-startup, "http://java.sun.com/xml/ns/ javaee":已启用, "http://java.sun.com/xml/ns/javaee":async-supported, "http://java.sun.com/xml/ns/ javaee":run-as, "http://java.sun.com/xml/ns/javaee":security-role-ref, "http://java.sun.com/xml/ns/ javaee":multipart-config' 是预期的。

谁能给点意见?

【问题讨论】:

【参考方案1】:

删除此标题并尝试

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

并添加标头架构参考

<?xml version="1.0" encoding="UTF-8"?>

【讨论】:

,仍然失败并显示元素类型“web-app”必须由匹配的结束标记“”终止。【参考方案2】:

你的 web.xml 结构应该是这样的。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
    <display-name>WebProject</display-name>
    <servlet>
        <servlet-name>LoginServlet</servlet-name>
        <display-name>LoginServlet</display-name>
        <servlet-class>com.wise.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/LoginServlet</url-pattern>
    </servlet-mapping>
</web-app>

【讨论】:

,它仍然失败并出现2个错误。第一个是:元素类型“web-app”必须由匹配的结束标记“”终止。 另一个错误:cvc-complex-type.2.4.a:发现以元素“显示名称”开头的无效内容。 '"http://java.sun.com/xml/ns/javaee":servlet-class, "java.sun.com/xml/ns/javaee":jsp-file, "java.sun.com xml/ns/javaee":init-param, "java.sun.com/xml/ns/javaee":load-on-startup 之一, "java.sun.com/xml/ns javaee":enabled, "java.sun.com/xml/ns/javaee":async-supported, "java.sun.com/xml/ns javaee":run-as, "java.sun.com/xml/ns/javaee":security-role-ref, "java.sun.com/xml/ns javaee":multipart-config' 是预期的。 这个 web.xml 是用 Eclipse->Dynamic Web 项目生成的,它正在当前项目中工作。 您使用的是哪个服务器? 我使用 Maven Project 创建项目,并将 Maven 原型选择为 maven-archetype-webapp。使用 Apache Tomcat v9.0

以上是关于maven web.xml 元素类型“web-app”必须由匹配的结束标签“</web-app>”终止的主要内容,如果未能解决你的问题,请参考以下文章

web.xml不同版本的头信息

SSH整合

Eclipse Oxygen创建maven web项目

元素类型“...”的内容必须在 web.xml 中匹配

maven 创建war类型项目

一脚踩进java——Maven创建war类型项目