Java 依赖优先级



试图弄清楚JVM将如何决定使用哪个依赖项:

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

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

在简单的情况下,当您向 java 提供类路径并且不使用任何类加载器时,答案很简单。它将按照您提供的顺序搜索类路径。

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

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

最新更新