嗨,我正在构建一个使用json的java REST客户端应用程序。我的依赖关系中有一个冲突:一个必要的依赖关系需要jackson databindcoreannotations 2.10.1,另一个必要的依赖关系使用了一个较旧的版本2.2.2。
当在Eclipse中运行该应用时,这导致了一个 MessageBodyProviderNotFoundException
. 问题是maven包含了2.2.2版本,而不是2.10.1版本,所以我使用依赖管理来解决冲突,并包含2.10.1版本。所以我使用依赖管理来解决冲突,并包含2.10.1版本。在Eclipse中,这解决了问题,应用程序运行正常。
但在使用maven shade插件构建应用后,单机版应用仍然出现了失败的情况。MessageBodyProviderNotFoundException
. 异常是在需要2.10.1版本的代码部分抛出的,而不是在依赖于2.2.2版本的部分。
有什么想法吗?先谢谢你
EDIT: 我检查了我的本地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) ...