【发布时间】:2017-04-02 16:27:00
【问题描述】:
当我使用下面的代码时,我得到了异常。它看起来是 jar 问题,为了符合它,我取消了注释代码的注释,它工作正常。
Message 类使用@XmlRootElement 进行注释,因此这也不应该成为问题。
出现异常 - org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json, type=class java.util.ArrayList, genericType=class java.util.ArrayList。
@Path("/messages")
@Singleton
public class MessageResource {
MessageService service = new MessageService();
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getMessages(@BeanParam MessageBean bean) {
List<Message> messages;
if (bean.getYear() > 0)
messages = service.getMessagesForYearById(bean.getYear());
messages = service.getMessages();
return Response.ok().entity(messages).build();
}
// @GET
// @Produces(MediaType.APPLICATION_JSON)
// public List<Message> getMessages(@BeanParam MessageBean bean) {
//
// List<Message> messages;
//
// if (bean.getYear() > 0)
// messages = service.getMessagesForYearById(bean.getYear());
// messages = service.getMessages();
//
//
// return messages;
// }
}
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servletclass>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>testing.jaxrs.Messages</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/webapi/*</url-pattern>
</servlet-mapping>
【问题讨论】:
-
您是否将
jersey-json添加到您的依赖项中?请同时发布您的 web.xml。 -
我在 pom.xml 中添加了 jersey-bom、jersey-container-servlet-core、jersey-media-moxy 作为依赖项。