试图弄清楚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,它允许使用多个版本的库,但是我必须提到这是沉重的框架。

08-26 01:09
查看更多