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

Java使用Jersey REST API客户端上传文件出现MessageBodyWriter找不到异常

异常排查与解决方案

根因分析

  • 核心错误:Jersey客户端未正确注册multipart序列化组件。当前代码中客户端初始化时注册的是MultiPart.class,但处理multipart/form-data类型的序列化/反序列化,需要注册的是MultiPartFeature.class,这是触发MessageBodyWriter not found异常的直接原因。
  • 次要问题:客户端请求路径与服务端接口路径不匹配。服务端接口配置的路径为/upload/pdf,而客户端当前请求地址为/repositories/file/upload,缺少路径后缀/pdf,序列化问题修复后会触发404错误。
  • 潜在问题:若项目未引入jersey-media-multipart依赖,也会触发该异常。

修复步骤

  1. 修正客户端组件注册逻辑
    将原客户端初始化代码:
Client client = ClientBuilder.newClient().register(MultiPart.class);

修改为:

Client client = ClientBuilder.newClient().register(MultiPartFeature.class);

原有未调用的configureClient方法可直接删除,无需保留。

  1. 修正请求路径
    调整客户端请求地址,补全服务端接口的路径后缀。若服务端项目上下文根为/repositories/file,则请求地址修改为:
WebTarget server = client.target("http://localhost:8080/repositories/file/upload/pdf");
  1. 确认依赖引入
    以Maven为例,检查pom.xml中是否引入了版本匹配的multipart依赖,版本需与项目使用的Jersey核心版本保持一致:
<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-multipart</artifactId>
    <version>你的Jersey版本号</version>
</dependency>

修正后可运行的客户端核心代码

public static void main(String[] args) {
    Client client = ClientBuilder.newClient().register(MultiPartFeature.class);
    WebTarget server = client.target("http://localhost:8080/repositories/file/upload/pdf");
    
    FileDataBodyPart filePart = new FileDataBodyPart("file", new File("C:\\Users\\kunal\\Downloads\\JWTUtility.java"));
    filePart.setContentDisposition(FormDataContentDisposition.name("file").fileName("JWTUtility.java").build());
    
    MultiPart multipartEntity = new FormDataMultiPart().bodyPart(filePart);
    Response result = server.request().post(Entity.entity(multipartEntity, multipartEntity.getMediaType()));
    
    System.out.println(result.getStatus());
    System.out.println(result.readEntity(String.class));
    result.close();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 09:57:03