Java MessageBodyProviderNotFoundException在使用maven shade插件构建后发生[已解决]

Java MessageBodyProviderNotFoundException在使用maven shade插件构建后发生[已解决],java,json,maven,jersey,Java,Json,Maven,Jersey,嗨,我正在构建一个使用json的JavaREST客户端应用程序。我的依赖项中存在冲突:一个基本依赖项需要jackson databind/core/annotations 2.10.1,另一个基本依赖项使用旧版本2.2.2 在Eclipse中运行应用程序时,这会导致出现MessageBodyProviderNotFoundException。问题是maven包含了版本2.2.2,而不是2.10.1。因此,我使用依赖关系管理来解决冲突,并包括版本2.10.1。在Eclipse中,这解决了问题,应用

嗨,我正在构建一个使用json的JavaREST客户端应用程序。我的依赖项中存在冲突:一个基本依赖项需要jackson databind/core/annotations 2.10.1,另一个基本依赖项使用旧版本2.2.2

在Eclipse中运行应用程序时,这会导致出现
MessageBodyProviderNotFoundException
。问题是maven包含了版本2.2.2,而不是2.10.1。因此,我使用依赖关系管理来解决冲突,并包括版本2.10.1。在Eclipse中,这解决了问题,应用程序运行良好

但是在使用maven shade插件构建应用程序之后,独立应用程序仍然会失败,出现
消息bodyProviderNotFoundException
。异常在需要版本2.10.1的代码部分抛出,而不是在依赖于版本2.2.2的部分抛出

有什么想法吗?提前谢谢


编辑:我检查了我的本地maven存储库,它只包含版本2.10.1。所以问题不在于jar仍然包含版本2.2.2。

问题解决了。在Eclipse中运行应用程序显然不需要显式注册
JacksonJsonProvider
,但运行独立应用程序需要:

ClientConfig config = new ClientConfig().connectorProvider(new ApacheConnectorProvider()).register(new JacksonJsonProvider());
Client client = ClientBuilder.newBuilder().withConfig(config) ...

问题解决了。在Eclipse中运行应用程序显然不需要显式注册
JacksonJsonProvider
,但运行独立应用程序需要:

ClientConfig config = new ClientConfig().connectorProvider(new ApacheConnectorProvider()).register(new JacksonJsonProvider());
Client client = ClientBuilder.newBuilder().withConfig(config) ...