class X 没有可用的 MessageBodyWriter

No available MessageBodyWriter for class X

我正在尝试将一些混合数据从后端 (spring) 发送到后端 (jersey) 要发送的数据是混合的:对象、文件。 我不断收到此错误:

javax.ws.rs.ProcessingException: No available MessageBodyWriter for class "class ClassContainsAllMixedData" and media type "multipart/mixed".

这是我发送请求并等待响应的部分:

 try(MultiPart multiPart = new MultiPart()) {
        multiPart
            .bodyPart(new BodyPart(ClassContainsAllMixedData, MediaType.APPLICATION_JSON_TYPE))
            .bodyPart(
                    new BodyPart(file,
                            MediaType.APPLICATION_OCTET_STREAM_TYPE))
            .bodyPart(
                    new BodyPart(fileInfos,
                            MediaType.APPLICATION_JSON_TYPE));

        Response response = client.target(API_URI)
                .request(MediaType.APPLICATION_JSON)
                .post(Entity.entity(multiPart, multiPart.getMediaType()));
        System.out.println(response);
    }catch (ProcessingException ex){
        System.out.println(ex);
    }

我从来没有显示响应,因为它在请求时失败了。

这些是我使用的依赖项:

<dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet</artifactId>
        <version>2.6</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-jackson</artifactId>
        <version>2.6</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-multipart</artifactId>
        <version>2.6</version>
    </dependency>

问题出在依赖版本中,我通过删除版本标签修复了它,让 pom 自动获得正确的版本 (2.7)

 <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet</artifactId>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-jackson</artifactId>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-multipart</artifactId>
    </dependency>