2016-01-11 26 views

回答

6

雖然我也建議不要這樣做,我還是喜歡嘗試回答你原來的問題:

Java有一個類加載器的層次結構,因此,如果您在不同級別層次,類加載器定義了JAR文件其優越性。最受歡迎的示例是Web應用程序類加載器層次結構(例如Tomcat),其中應用程序類具有比comtainer類更高的優先級(如果兩者都適用)。

如果您將兩個JAR放在同一個類加載器(相同級別)中,則文件系統將確定從開發人員的角度來看不可靠的順序,因此請認爲它是隨機的。只有一個加載,但你不知道哪個,並且可能甚至不會從依賴性問題中得到錯誤。如果你得到依賴問題,它們可能是java.lang.Errors,比如VerifyError,NoClassDefFoundError,NoSuchMethodError。

+0

它是一個很好的答案,除了它對罐子只是存儲容器 - 罐子內部的類和包裝提供了很多功勞。如果兩個jar都定義了完全相同的完全限定的類名,則只會有衝突。 JVM絕對會加載這兩個jar,但它不會加載已加載的類。 – Gimby

0

可能發生的兩件事之一 - 你可以得到1.4版,或者你可以得到1.5。

不建議這樣做,特別是如果你使用的是兩個版本,其相距很遠略有不同的API,可能會導致編譯問題

1

簡短的回答可能導致問題是你不想這樣做

根據您使用JAR提供的類的方式,您可以有明確的異常或奇怪的行爲。

相關問題