【问题标题】:Need two different version JARs in one Java app在一个 Java 应用程序中需要两个不同版本的 JAR
【发布时间】: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 KinesisMaxMind GeoIP2的坐标吗?
  • 如果“坐标”指的是 JAR 版本,请查看更新后的原帖。如果不是,我不明白你的意思。
  • 是的,我正在寻找 Amazon KinesisMaxMind GeoIP2 的 maven GAV 坐标。
  • 将 Kinesis 及其依赖项加载到一个类加载器中,并将 GeoIP2 加载到另一个类加载器中。从您需要调用它们的代码中,不要进行显式调用,而是从相应的类加载器中获取实例,并使用反射对它们进行操作。说实话,您最好将其中一个降级,以便他们可以使用相同的 Jackson 版本...
  • 如果运行时只有 jackson-databind 2.8.8.1 在您的类路径中会发生什么?

标签: java maven jar classloader


【解决方案1】:

【讨论】:

  • 鉴于两个第三方 JAR 都在寻找特定的类路径,该解决方案是否可行?
猜你喜欢
  • 1970-01-01
  • 2019-11-18
  • 1970-01-01
  • 2018-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-09
  • 1970-01-01
相关资源
最近更新 更多