2014-01-14 50 views
0

在jar文件的清單中,是否列出了罐子列出的順序。JMS清單文件,是否具體說明罐子的順序

原來的傷疤能夠接受後來的傷口。將後來的罐子能夠訪問前罐子

爲了澄清,我指的是在RSRC-類路徑中引用兩個jar文件:清單

感謝

+0

不,不管順序如何,類加載器都加載它們。 - 編輯我應該說不,除了重複的類以外,在這種情況下,由類加載器找到的第一個實體(不完全確定是否等於類路徑中的第一個條目)是運行時使用的類。 –

+0

也檢查了這一點:http://www.onjava.com/pub/a/onjava/2005/01/26/classloading.html –

回答

0

,這樣對擴大我評論,答案仍然沒有。原因是,除了類路徑hackery(我自己做了一兩次)之外,Jar和類文件在您的代碼運行之前由每個ClassLoader加載。只有在應用程序中進行有意義的使用時纔會初始化這些類(如訪問靜態字段或創建實例)。重點是,ClassLoader使用其類路徑中的條目來確定何時加載類。當你嘗試使用這些類時,ClassLoader已經有了它可以提供給你的類的列表。

請參閱我在評論中提供的鏈接以瞭解關於課程加載的更多信息。

+0

很好的答案。我第一次有一個問題。我打了檢查標記,但它不會讓我投票 – user3192053

1

是的,它很重要,但不符合你的建議。 Oracle的技術說明Setting the class path說(右底部):

規格爲了

在其中可以指定多個類路徑項的順序很重要 。 Java解釋器將按照它們出現在類路徑變量中的順序在 目錄中查找類。 在上面的例子,

(在那裏它們將classpath設置爲C:\java\MyClasses;C:\java\OtherClasses

Java解釋器將首先尋找一個所需類在目錄C:\java\MyClasses。只有在目錄中找不到具有正確名稱的類時,解釋器纔會查找C:\java\OtherClasses目錄。

+0

這將在重複類的情況下,什麼不正確?意思是,如果你以某種方式部署了一個具有V1.0的類路徑條目的版本,並且某些API的V1.1的更高版本條目將會被使用,而不是你可能打算使用的版本V1.1。 –

+0

正是!你不需要擔心依賴關係,類加載器會計算出來,但同一類的不同版本很重要。 – flup

相關問題