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

WebSphere9部署Jersey3.0.2 REST服务报SRVE0201E非Servlet类错误如何解决

问题根因

本质为Java EE与Jakarta EE命名空间不兼容导致:

  • WebSphere 9 遵循Java EE 8规范,内置Servlet API采用javax.servlet.*命名空间
  • Jersey 3.x 为Jakarta EE 9+适配版本,包括ServletContainer在内的核心类均继承jakarta.servlet.*包下的HttpServlet,WebSphere 9无法识别该类为合法Servlet,因此抛出对应错误。

解决方案

优先选择方案1,适配成本最低:

方案1:降级Jersey到2.x稳定版本

Jersey 2.x版本仍遵循Java EE 8规范,使用javax命名空间,完全兼容WebSphere 9环境:

  1. 替换所有已导入的Jersey 3.x依赖包为统一版本的Jersey 2.x,建议选择2.39、2.41等官方维护的稳定2.x版本,必选依赖包包括:
    • jersey-common
    • jersey-server
    • jersey-container-servlet
    • jersey-media-json-jackson(用于JSON序列化,你的接口需要返回JSON所以必须添加)
    • 对应版本的javax.ws.rs-api依赖
  2. 原有web.xml配置无需修改,保持现有Servlet配置即可
  3. 检查REST POJO类的导入包,确保所有注解来自javax.ws.rs包,示例正确导入如下:
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
  1. 重新打包启动项目,访问http://localhost:9080/CCFPortal/review/list即可正常调用接口。

方案2:升级容器适配Jersey 3.x

如果必须使用Jersey 3.x版本,需要将容器替换为支持Jakarta EE 9+的版本:

  • 传统WebSphere 9不支持Jakarta EE规范,可更换为WebSphere Liberty 20.0.0.6及以上版本,开启Jakarta EE 9/10特性后即可兼容Jersey 3.x。
    该方案需要调整容器配置,适配成本更高,无特殊需求不建议选择。

额外注意事项

  • 手动导入依赖时务必保证所有Jersey相关包版本完全一致,避免版本冲突导致的类加载异常
  • 若启动后仍报错可先清理WebSphere的临时缓存目录,再重新部署应用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:54:03