You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Eclipse 2021-06搭配Apache Tomcat 10新建动态Web项目时web.xml文件报错求助

解决Tomcat 10 + Eclipse动态Web项目web.xml版本报错问题

这个问题我之前帮同事排查过,核心原因是Tomcat 10和你用的旧版web.xml规范不兼容——Tomcat10已经切换到Jakarta EE的Servlet 5.0规范了,而你的web.xml还在用老的Java EE(javax)命名空间,版本设置不对,甚至schema路径还写错了,这几个问题凑在一起就导致了version="2.5"处的报错。

下面是具体的解决步骤:

1. 替换web.xml为适配Tomcat10的规范

直接把你的web.xml内容替换成以下代码,它完全适配Jakarta Servlet 5.0(对应Tomcat10)的要求:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="5.0"
         xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee 
                             https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd">
    <display-name>01Test</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
</web-app>

这里的关键变化:

  • 命名空间从http://java.sun.com/xml/ns/j2ee换成了Jakarta EE的https://jakarta.ee/xml/ns/jakartaee
  • 版本从2.5改为5.0(对应Tomcat10的Servlet版本)
  • schema路径更新为Jakarta官方的5.0版本xsd地址

2. 修正Eclipse项目的Web模块版本

右键你的项目 → PropertiesProject Facets

  • 找到Dynamic Web Module,确保它的版本是5.0(和Tomcat10的Servlet版本对应)
  • 如果之前是旧版本,切换时Eclipse会提示是否更新配置文件,直接确认即可

3. 验证Tomcat10的Target Runtime配置

右键项目 → PropertiesTarget Runtime

  • 确保选中的是你配置的Tomcat 10.x实例,而不是其他版本的Tomcat
  • 如果还没添加Tomcat10到Eclipse,点击Add按钮,按照向导完成Tomcat10的配置

额外注意事项

Tomcat10和Tomcat9及以下的核心区别是:所有javax.*相关的包都换成了jakarta.*。所以后续你编写Servlet、Filter等组件时,要导入jakarta.servlet.*的包,而不是旧的javax.servlet.*,否则会出现类找不到的错误。

内容的提问来源于stack exchange,提问作者Guido Cavallini

火山引擎 最新活动