2014-11-03 31 views
0

假設我在構建項目時在類路徑上有兩個jar文件 - myJarFile.jar和myJarFileOld.jar。它們包含相同的包和相同的類,但myJarFileOld.jar包含舊的實現,這會導致編譯失敗。我不是要求解決這個錯誤,我知道我應該刪除myJarFileOld.jar來編譯工作。不過,我想知道,什麼機制決定在編譯期間使用哪個jar文件的類,當兩個jar文件都存在時?編譯期間使用哪個jar文件?

回答

0

當需要加載一個類時,將按順序掃描classpath中的所有jar文件。一旦找到課程,它就會被加載。

0

不完全確定,但我相信類路徑外觀的順序是決定的。如果它在第一個jar中找到,那麼它不是在另一箇中搜索。不過,我很確定類加載器會在開始時加載這兩個jar,並且你會得到一些關於重複代碼的錯誤。不過我不確定,這可能與運行時環境有關。

0

你必須在Eclipse此功能,您可以指定您希望從項目classpath.Go執行下一次

Project->Select Properties->Select Build Path from left pane-> go to Order and Export Tab->Select Top or Bottom button-> click ok. 

罐子的順序生成項目從罐子類路徑將按照您指定的順序挑選。

+0

不錯的功能,謝謝,但不適用於我。我們使用ANT進行編譯,類路徑由更多源組成,其中一個源是項目中包含的整個lib目錄。我只是想知道彙編的細節,我希望在這裏得到一些信息。 – Michal 2014-11-03 13:18:33