新建动态Web项目后web.xml web-app声明行报错排查
问题说明
新建动态Web项目后web.xml第2行<web-app>声明位置报校验错误,同时关联javaee.xml报错,当前未编写自定义业务代码,web.xml内容如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>LibraryManagement</display-name> <absolute-ordering /> <!-- Spring MVC Configurations --> <!-- Configure Spring MVC Dispatcher Servlet --> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-mvc-demo-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- Set up URL mapping for Spring MVC Dispatcher Servlet --> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
报错截图如下:
故障根因
报错和文件内的Spring MVC配置无关,核心原因是项目配置的Web模块版本、关联的服务器运行时与web.xml声明的Servlet规范版本不匹配:
- 当前web.xml声明的是Servlet 3.1版本,对应需要Tomcat 8.0及以上版本的运行时环境
- 如果创建项目时选的Tomcat版本低于8.0(比如Tomcat 7最高仅支持Servlet 3.0),或者项目没有正确关联Server Runtime依赖,IDE无法加载对应版本的Java EE schema校验文件,就会在web-app声明行抛出校验错误,同时关联的javaee.xml也会同步报错。
- 少数情况是IDE的XML校验缓存异常导致的误报。
解决步骤
- 右键项目打开
Properties面板,找到Project Facets配置页 - 先切换到
Runtimes标签,勾选本地安装的、和Web模块版本匹配的Tomcat服务器:- Tomcat 7最高支持Servlet 3.0,对应Dynamic Web Module版本选3.0,同时把web.xml的web-app声明头替换为3.0版本:
<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"> - Tomcat 8.x支持Servlet 3.1、Tomcat 9.x支持Servlet 4.0,保持web.xml对应版本声明即可
- Tomcat 7最高支持Servlet 3.0,对应Dynamic Web Module版本选3.0,同时把web.xml的web-app声明头替换为3.0版本:
- 配置完成后点击Apply保存,依次执行
Project -> Clean清理项目缓存、右键项目选择Validate重新触发校验,关闭xml文件再重开,错误就会消失。
内容的提问来源于stack exchange,提问作者Nandita
相关产品推荐
相关产品推荐

