2016-01-07 96 views
1

我越來越NoClassDefFoundError嘗試加載類似乎是由於依賴版本衝突。Maven傳遞依賴引起NoClassDefFound錯誤

項目A - >項目B - >項目C.

這裏已包括版本2.0項目C項目A.內

項目B需要1.0版本項目C.

現在,當項目B代碼嘗試從項目C加載類時,它將獲得版本2.0。

有沒有一種方法,我可以明確定義指項目C(1.0版),如果項目B試圖這樣做,並在所有其他情況下,應該選擇版本2.0

我的意思是,我們可以排除方法傳遞依賴,是否有明確定義包含的方法(僅用於相應項目的引用而不是整個應用程序代碼)。

謝謝。

+0

沒有發佈你'pom.xml'文件和'mvn dependency:tree',任何人都很難弄清楚發生了什麼。 – carlspring

回答

0

我嚴重懷疑這一點。如果我正確地理解了這個問題,那麼你的構建會導致將兩個不同版本的jar項目同時加載到JVM中(一個針對項目B,另一個針對項目A)。由於它們可能共享相同的包和類名,因此JVM無法區分它們。

如果項目C是你自己的項目,並且從版本1.0改變到2.0,我會考慮使用一個新的包名,比如org.example.c2而不是org.example.c(例如在Apache commons-lang項目)。