You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

REST Web服务教程运行报404及jakarta.servlet.Filter类缺失问题求助

REST Web Services 部署问题解决方案

问题1:java.lang.ClassNotFoundException: jakarta.servlet.Filter 异常修复

该异常由Servlet API版本与REST实现、服务器版本不匹配导致:

  • 根因:Jakarta EE 9 版本起将Servlet包命名空间从javax.servlet变更为jakarta.servlet,如果你的REST依赖(如Jersey 3.x+)基于Jakarta EE规范,但部署用的服务器是Tomcat 9及更早版本(仅支持javax.servlet),就会出现类找不到错误;反之如果REST依赖是旧版javax系,部署到Tomcat 10+也会触发该异常。
  • 修复步骤:
    • 先匹配服务器与依赖版本:Tomcat 9及以下使用Jersey 2.x系列依赖(基于javax.servlet),Tomcat 10及以上使用Jersey 3.x+系列依赖(基于jakarta.servlet)
    • 检查pom.xml依赖配置,确保对应版本的servlet-api和jersey-container-servlet依赖引入正确,不要混用javax和jakarta前缀的包
    • 不要直接移除web.xml配置,该文件是REST接口路径映射的核心配置,移除后必然出现404错误

问题2:移除web.xml后接口返回404修复

移除web.xml后没有配置REST Servlet的映射规则,服务器无法识别你的资源类路径,按以下步骤修复:

  1. 恢复web.xml文件,添加Jersey Servlet配置,示例如下(适配javax规范版本):
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>JerseyWebApp</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>替换为你自己的资源类所在包名,如com.yourname.messenger.resources</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>JerseyWebApp</servlet-name>
        <url-pattern>/webapi/*</url-pattern>
    </servlet-mapping>
</web-app>
  1. 检查你的资源类配置:
    • 类上必须加@Path("/myresource")注解
    • 处理GET请求的方法必须加@GET注解,返回值为字符串Gotit
  2. 检查部署配置:
    • 确认项目打包生成的war包名为messenger.war,否则访问路径的上下文根需要和war包名保持一致
    • 确认Maven打包时将所有运行时依赖都打入WEB-INF/lib目录,不要将Jersey相关依赖的scope设为provided,否则运行时会缺失类

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 06:54:00