试图弄清楚JVM如何决定使用哪个依赖项:
我们有一个gradle
编译的fatJar,其中包含多个依赖项,即Jackson
X版本等。
我的应用程序是一个Play framework 1.x
应用程序,使用了阶段1中的fatJar工件以及其他依赖项,包括aws java sdk
本身使用的是Jackson
,它比X版本要新。
如何确定运行时使用哪个Jackson
版本?
[似乎在1个env上它使用了正确的一个,而在aws sdk
上使用了不正确的Jackson
]
最佳答案
在简单的情况下,当您提供java的类路径并且不使用任何类加载器时,答案很简单。它将按您提供的顺序搜索classpath。
我强烈建议您不要依赖这种行为。
有解决您的问题的方法。其中之一使用OSGi,它允许使用多个版本的库,但是我必须提到这是沉重的框架。