【发布时间】:2017-12-31 12:51:16
【问题描述】:
我有一个 Java 应用程序,其中包含两个第三方 JAR(Amazon Kinesis 和 MaxMind GeoIP2),每个 JAR 都使用不同版本的 Jackson。两个版本的 Jackson 都不能与这两个第三方 JAR 一起使用。
此外,我正在运行 Apache 的 maven JAR 插件 - 它创建了一个包含所有依赖类的 uber JAR。
鉴于我无法更改第三方 JAR,我不知道如何才能让每个第三方 JAR 调用 Jackson 的适当版本 JAR。
有什么想法吗?
Kinesis 期待:
com.fasterxml.jackson.dataformat » jackson-dataformat-cbor:2.6.6
com.fasterxml.jackson.core » jackson-databind:2.6.6
GeoIP2 期待:
com.fasterxml.jackson.core » jackson-databind:2.8.8.1
【问题讨论】:
-
你能分享
Amazon Kinesis和MaxMind GeoIP2的坐标吗? -
如果“坐标”指的是 JAR 版本,请查看更新后的原帖。如果不是,我不明白你的意思。
-
是的,我正在寻找
Amazon Kinesis和MaxMind GeoIP2的 maven GAV 坐标。 -
将 Kinesis 及其依赖项加载到一个类加载器中,并将 GeoIP2 加载到另一个类加载器中。从您需要调用它们的代码中,不要进行显式调用,而是从相应的类加载器中获取实例,并使用反射对它们进行操作。说实话,您最好将其中一个降级,以便他们可以使用相同的 Jackson 版本...
-
如果运行时只有 jackson-databind 2.8.8.1 在您的类路径中会发生什么?
标签: java maven jar classloader