相關:manage conflict on java classpath如何管理圖書館衝突? (相同的封裝,不同版本)
也涉及:Java Classloader - how to reference different versions of a jar
我在這各擁有兩個jar文件有它包含在jar文件本身的依賴,但兩者是不同的版。
a.jar -> has c.class/c2.class/c3.class/.. version 0.3 in it
b.jar -> has c.class/c2.class/c3.class/.. version 1.0 in it
但是,當我試圖在同一個項目中使用這兩者。它似乎只使用c.class從一個罐子,但沒有另一個。由於這兩個版本的API都非常不同,所以這成爲一個問題。無論如何要告訴他們只需從各自的jar中使用c.class?我不能在這裏修改a.jar和b.jar。
btw。快速搜索後,似乎人們建議OSGI和類加載器,但我知道它應該是最快的方式來處理它? (已經讀了一些關於classloader的內容,但仍不確定如何使用它)。
編輯:我更喜歡使用原始庫他們打包,因爲我已經分別評估這兩個jar(他們是文本挖掘工具具有相同的後端,但版本是非常不同的)。現在我想將它們兩個整合爲一個,並儘可能地使環境接近原始。 現在我按照Travis Webb的解決方案,但我仍然想知道爲什麼jar不分開這兩個庫。
相關問題:http://stackoverflow.com/questions/274317/mixing-different-versions-of-java-libraries –