在Java中,我最近遇到了一個案例,我得到了兩個不同的jar,每個jar都定義了一個類。問題是這些罐子中的一個已經過時,而且有問題的課程缺少一種存在於一個罐子中而不存在於其他罐子中的方法。從兩個衝突的瓶子中導入類時,使用哪一個?
所以,我得到一個錯誤,代碼中使用的方法無法找到。我最終能夠通過移除舊的jar來解決這個問題,以便導入正確的jar。
許多人使用這個相同的代碼(與相同的兩個,衝突,導入瓶),並沒有這個問題。所以,他們一定是導入了最新的jar。
我的問題是這是什麼導致我導入一個jar在另一個?什麼邏輯決定哪些是「使用」?
謝謝!
有一個稱爲OSGi的東西解決這個問題。 OSGi允許您輕鬆定義JAR之間的依賴關係,因此您可以在JAR中擁有給定類的各種版本,並選擇要使用哪個類。 – 2012-04-25 17:19:12
@PiotrKochański - OSGi可能是一個矯枉過正的問題:-) – mrab 2012-04-25 17:21:36
@mrab通常它是:),除非你想編寫應用程序服務器 – 2012-04-25 17:27:45