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