2017-07-24 70 views
0

试图找出如何将JVM决定哪些依赖使用方法:Java的依赖优先

  1. 我们有一个gradle编译fatJar,包含几个依赖关系,即Jackson X版本等
  2. 我的应用程序是Play framework 1.x应用程序,使用来自阶段1的fatJar工件和其他依赖项,包括aws java sdk,其本身使用Jackson本身,比X版本更新。

如何判断在运行时使用哪个版本的Jackson? [似乎在1个ENV它使用正确的,而另一方面,aws sdk使用不正确Jackson]

+0

如果您可以重新部署,您可以使用[此技术](https://stackoverflow.com/questions/1983839/determine-which-jar-file-a-class-is-from)以及一些额外的日志记录,只是为了确认你的理论。 – Michael

回答

1

在简单的情况下,当您提供classpath中java和不使用任何类加载器的答案很简单。它将按照您提供的顺序搜索classpath。

我强烈建议您不要依赖这种行为。

有问题的解决方案。其中一个使用OSGi,它允许使用多个版本的库,但我必须提到它是沉重的框架。