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

升级至Tomcat10.1.26时Jersey容器出现javax类找不到错误

解决Tomcat 10.1.26部署时JerseyContainer抛出javax.ws.rs.core.Feature找不到的问题
  • 确认Jersey版本适配Jakarta EE 10
    Tomcat 10.1对应Jakarta EE 10,必须使用Jersey 4.x版本(如4.0.1及以上)。如果项目里用的是Jersey 3.x或更低版本,这些版本依赖的是javax.ws.rs包,而非Jakarta EE 10要求的jakarta.ws.rs,直接会导致类找不到。
    检查你的依赖配置(比如Maven的pom.xml),确保Jersey核心依赖都是4.x版本,示例如下:

    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-server</artifactId>
        <version>4.0.1</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet</artifactId>
        <version>4.0.1</version>
    </dependency>
    
  • 排查依赖传递引入的旧javax.ws.rs库
    即便你没直接引入,第三方依赖可能间接带了旧版本的Jersey或JAX-RS API。用构建工具的依赖分析命令排查:

    • Maven:执行mvn dependency:tree,搜索输出里的javax.ws.rs关键词,找到对应的依赖后,在pom.xml里用<exclusions>排除这些旧依赖。
    • Gradle:执行gradle dependencies,同样搜索javax.ws.rs,找到后通过exclude语法排除。
  • 检查Tomcat lib目录的遗留jar
    查看Tomcat的${CATALINA_HOME}/lib目录,有没有javax.ws.rs-api.jar或者旧版本的Jersey相关jar(比如jersey-server-2.x.jar)。如果存在,直接删除这些jar——Tomcat 10.1不需要这些文件,反而会和项目里的Jakarta版本产生冲突。

  • 清理项目构建缓存
    构建工具的缓存可能残留旧的编译文件或依赖:

    • Maven:删除~/.m2/repository中相关的Jersey和JAX-RS目录,或者执行mvn clean install -U强制更新依赖并清理缓存。
    • Gradle:执行gradle clean build --refresh-dependencies清理缓存并重新构建。
  • 检查web.xml或配置类的引用
    如果你用web.xml配置Jersey,确保servlet类是Jakarta版本的org.glassfish.jersey.servlet.ServletContainer,而非旧的com.sun.jersey.spi.container.servlet.ServletContainer。
    另外,若有自定义的Feature或Provider类,确认它们继承/实现的是jakarta.ws.rs.core.Feature,而非旧的javax版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 13:00:53