在Java应用程序中需要两个不同版本的JAR文件

3
我有一个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 的坐标吗? - Rishikesh Darandale
如果“坐标”指的是JAR版本,请查看更新后的原始帖子。如果不是,我不知道你的意思。 - Todd
1
将Kinesis及其依赖项加载到一个类加载器中,将GeoIP2加载到另一个类加载器中。在需要调用它们的代码中,不要进行显式调用,而是从相应的类加载器中获取实例,并使用反射对它们进行操作。说实话,最好降级其中一个,以便它们可以使用相同的Jackson版本... - jingx
如果在运行时只有jackson-databind 2.8.8.1位于类路径中,会发生什么? - VGR
在仔细检查各种可能性后,我选择将我的GeoIP2 JAR降级到使用与AWS Kinesis相同的Jackson JAR版本。 - Todd
显示剩余2条评论
1个回答

0

2
鉴于两个第三方JAR都在寻找特定的类路径,这个解决方案是否可行? - Todd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接