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

访问内嵌Tomcat报servlet实例分配IllegalArgumentException异常

错误原因

该异常由Jersey 2.26内置的ASM字节码工具不支持Java 10编译生成的类文件格式直接导致。
从错误栈可以看到,异常抛出点是Jersey重打包内置的ClassReader初始化逻辑:Jersey 2.26内嵌的ASM版本为5.x,最高仅支持解析Java 9及以下版本的class文件(Java 10的类文件主版本号为54,超出老版本ASM的支持范围),类解析失败就会抛出IllegalArgumentException。
由于异常触发时机是Jersey Servlet首次被请求时的初始化阶段(初始化过程才会扫描路径下的资源类、读取类字节码),因此服务启动阶段不会提前抛出异常,第一次访问localhost触发servlet加载时才会报错。
当前Maven配置中存在Tomcat依赖版本不匹配的隐患:tomcat-embed-core使用8.5.11版本,tomcat-jasper却使用8.0.43版本,版本差可能引发类加载、JSP编译类的异常,虽然不是本次报错的直接原因,但建议同步修复。

解决步骤
  • 修复Jersey与JDK版本兼容问题,二选一即可:
    • 方案1(推荐):升级Jersey版本到2.27及以上。Jersey从2.27版本开始将内置ASM升级到了支持Java 10+字节码的版本,直接将所有Jersey相关依赖(jersey-hk2、jersey-container-servlet)的版本统一升级到2.x分支的稳定终版2.35即可。
    • 方案2:如果受项目限制无法升级Jersey,将运行环境的JDK版本降级到Java 8或Java 9,匹配Jersey 2.26的字节码支持范围。
  • 统一Tomcat相关依赖版本,将tomcat-jasper的版本调整为和tomcat-embed-core一致的8.5.11,消除版本不匹配的隐患。
  • 调整完成后重启服务,首次访问本地站点时控制台不再抛出servlet分配异常、页面正常响应即为修复完成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:45:32