【问题标题】:MessageBodyWriter not found for media type application/json找不到媒体类型 application/json 的 MessageBodyWriter
【发布时间】:2015-12-13 00:52:16
【问题描述】:

我的日志中出现以下错误:

org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor aroundWriteTo
Grave: MessageBodyWriter not found for media type=application/json, type=class com.sample.MyDTO, genericType=class com.sample.MyDTO.

一般来说,这是由于缺少注册的MessageBodyWriter 造成的,但在我的情况下,我确实在类路径中有jersey-media-proxy JAR(及其所有依赖项)。如果这有助于调试,我确认在部署我的 Web 应用程序时调用了 MoxyJsonFeature 的配置方法。

我准确地说我使用的是 Jersey v2.21。我的 Web 应用程序部署在 Tomcat 8.0.26 上。

有什么想法吗?

谢谢, 迈克尔

【问题讨论】:

  • 玩了一段时间后,我能够重现问题的唯一方法是 not 有一个无参数构造函数 一个构造函数DTO 类中的 arg。您的 DTO 课程是否属于这种情况?
  • 我有一个默认和非默认的构造函数。
  • 这很奇怪。这是我第一次看到这个问题。我很长一段时间都在使用 Jersey 和 Moxy,没有任何问题。
  • 我不知道,尝试切换到jersey-media-json-jackson 看看问题仍然存在。只是看看它是否是一个 MOXy 问题。如果您不从类路径中删除 MOXy,则需要注册 JacksonFeature
  • @peeskillet 它适用于杰克逊。看起来像 MOXy 的问题。

标签: java json jersey-2.0


【解决方案1】:

我花了一段时间才弄清楚,但你让我找到了解决方案。看来,要让 Moxy 工作,您需要使用:

  1. 默认构造函数
  2. 设置方法

每个资源

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-16
    • 2020-07-30
    • 2015-08-05
    • 2013-03-15
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    相关资源
    最近更新 更多