Jersy 2客户端+ JAXB(找不到MessageBodyWriter) [英] Jersy 2 Client + JAXB (MessageBodyWriter not found)

查看:157
本文介绍了Jersy 2客户端+ JAXB(找不到MessageBodyWriter)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在客户端模式下使用Jersy 2将XML发布到服务器,但是我总是遇到异常.

I'm trying to use Jersy 2 in client mode to post XML to a server but i always get an exception.

我的pom文件中只有一个依赖项:

I have got only one dependency in my pom file:

<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-client</artifactId>
    <version>2.18</version>
</dependency>

我的Java代码:

public static void main(String... args) {
    Client client = ClientBuilder.newClient();
    WebTarget target = client.target("http://localhost:8080");
    Entity<SimpleClass> entity = Entity.entity(new SimpleClass(), MediaType.APPLICATION_XML_TYPE);
    target.request(MediaType.TEXT_XML_TYPE).post(entity);
}

@XmlRootElement(name = "test")
@XmlAccessorType(XmlAccessType.NONE)
public class SimpleClass {
    @XmlElement(name = "hello")
    private String text;

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }
}

例外:

Exception in thread "main" org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/xml, type=class jersey.SimpleClass, genericType=class jersey.SimpleClass.

我做错了什么?

推荐答案

感谢peeskillet!

Thank's to peeskillet!

从Jersey 2.16开始,您必须添加JAX-B支持:

Since Jersey 2.16 you have to add JAX-B support:

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-jaxb</artifactId>
    <version>2.18</version>
</dependency>

请参阅: 新泽西州版本问题:找不到针对媒体类型的MessageBodyReader = application/xml

这篇关于Jersy 2客户端+ JAXB(找不到MessageBodyWriter)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆