在maven构建的JAR中找不到Jersey消息体阅读器

Olv*_*gor 5 java rest jax-rs executable-jar maven-assembly-plugin

我的应用程序使用REST(JAX-RS Jersey)接口.当我在Eclipse中运行它时,一切都很好.域对象是注释的,我没有使用XML文件进行REST映射.

现在我使用maven-assembly-plugin创建了一个独立的JAR,它将应用程序和所有依赖项打包在一个可执行的JAR文件中.这似乎也有效.

但是当我启动应用程序并从服务器请求一个对象时,Jersey抱怨说它无法找到一个消息正文阅读器:

com.sun.jersey.api.client.ClientHandlerException: A message body reader for Java type, class de.rybu.atuin.core.entity.User, and MIME media type, application/json, was not found
Run Code Online (Sandbox Code Playgroud)

任何想法为什么会这样?

编辑:我睡了一个晚上后,我发现它抱怨JSON ......但我只使用XML进行序列化.奇怪.

Olv*_*gor 1

我解决了这个问题,我想我知道怎么做:-)

我的资源注释如下:

@Produces( { MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Path(CONTEXT_ADDRESS)
public class UserResource
{
}
Run Code Online (Sandbox Code Playgroud)

我的客户使用了相反的顺序:

WebResource wr = ...
User user = wr.accept(MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_XML_TYPE).get(new GenericType<User>(){});
Run Code Online (Sandbox Code Playgroud)

我不知道最初是什么导致了这个问题,但我完全删除了 JSON 支持,现在它可以工作了。也许在客户端中简单地交换 JSON 和 XML 的顺序就足够了,但我没有尝试这样做。