2017-07-24 43 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,它允許使用多個版本的庫,但我必須提到它是沉重的框架。