使用 Maven 阴影插件构建后的 MessageBodyProviderNotFoundException [已解决]

MessageBodyProviderNotFoundException after building with maven shade plugin [solved]

您好,我正在构建一个使用 json 的 java REST 客户端应用程序。我的依赖项存在冲突:一个基本依赖项需要 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 插件构建应用程序后,独立应用程序仍然失败并显示 MessageBodyProviderNotFoundException。需要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) ...