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

Jersey Client 3.1.1报错InjectionManagerFactory not found求解决方案

Jersey Client 3.1.1 「InjectionManagerFactory not found」问题解决

问题背景

使用Jersey Client 3.1.1向REST API提交JSON时,调用JerseyWebTarget.request()方法触发java.lang.IllegalStateException: InjectionManagerFactory not found异常,具体抛出点为ClientConfig$State.initRuntime()中执行Injections.createInjectionManager()时。运行环境为Servlet 5.0/Tomcat 10,必须使用Jersey 3.x版本,已尝试添加jersey-hk2:3.1.1及jersey-cdi1x依赖,均未解决问题。

原因分析

Jersey 3.x基于Jakarta EE 9+规范,依赖体系与2.x差异较大:

  • 单纯引入jersey-cdi1x仅适配CDI环境,独立使用Jersey Client时需要的是HK2注入实现
  • 依赖传递可能导致版本不一致,或缺失核心注入管理器的实现类
  • Tomcat 10的类加载机制可能影响依赖的加载优先级

解决方案

1. 明确引入完整的Client+HK2依赖(推荐)

直接指定jersey-client和jersey-hk2的3.1.1版本,避免依赖传递带来的版本偏差:

<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-client</artifactId>
    <version>3.1.1</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.inject</groupId>
    <artifactId>jersey-hk2</artifactId>
    <version>3.1.1</version>
</dependency>

2. 手动指定注入管理器工厂

如果依赖正确但Factory仍无法被自动加载,在创建Client前手动设置系统属性指定HK2实现:

import org.glassfish.jersey.inject.hk2.Hk2InjectionManagerFactory;
import org.glassfish.jersey.internal.inject.InjectionManagerFactory;

// 初始化注入管理器工厂
System.setProperty(InjectionManagerFactory.class.getName(), Hk2InjectionManagerFactory.class.getName());

// 后续正常创建Client和WebTarget
Client client = ClientBuilder.newClient();
WebTarget myWebTarget = client.target("你的API地址");
Builder builder = myWebTarget.request(MediaType.APPLICATION_JSON_TYPE);

3. 排查并解决依赖冲突

使用Maven命令查看依赖树,检查是否存在2.x版本的Jersey或HK2依赖:

mvn dependency:tree

若发现冲突依赖,在对应的<dependency>中添加<exclusions>排除低版本模块,确保所有Jersey相关依赖版本统一为3.1.1。

4. Tomcat 10环境适配

  • 确保web.xml中未禁用Jersey的注入机制
  • 若项目中同时引入其他CDI容器(如Weld),需明确配置Jersey优先使用HK2,可通过添加jersey-hk2的优先级配置或在ClientConfig中注册HK2绑定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:08:01