JerseyでMessageBodyProviderNotFoundExceptionが発生したので解決した


大した記事ではないですが、調べても出てこなかったので忘れないためにもメモします。(調べて出てこなかったのは基本的すぎるから?)

Jerseyで適当なメソッドを作ってブラウザからアクセスしました。@Produces(MediaType.APPLICATION_JSON)を指定していたので、結果はJSONで返るはずが、なぜか例外が発生でHTTP 500発生。

例外メッセージはこんな感じです。

org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json, type=class com.tsukaby.hoge.ChartData, genericType=class com.tsukaby.hoge.ChartData.

メソッドの戻り値は単純なPOJOですし、nullでもないし、普通にJSONが返されればいいものの・・・。

結果は色々見ると、pom.xmlに以下の記述が不足していたからでした。

<dependency>
  <groupId>org.glassfish.jersey.media</groupId>
  <artifactId>jersey-media-moxy</artifactId>
</dependency>

上記を追加して、再デプロイで解決しました。こんなんで1時間以上無駄にしました。