2011-06-30 121 views
0

我在想如果我有一對耳朵和戰爭的應用程序,並在他們每個類名爲「測試」,會發生什麼? 它是地獄嗎? 什麼類會先加載(從耳朵或從戰爭)? 請寄給我一個地方,在那裏我可以閱讀這個棘手的案例更詳細。Java類路徑加載問題

回答

0

你必須使用軟件包。 com.foo.Testcom.foo2.Test不同。

+0

我知道,但如果我有一些外部庫,我無法管理,所描述的情況的裝載順序是什麼? – Denis

1

Servlet容器通常使用一個classloader-per-webapp策略來避免這種情況。因此,如果您在同一個容器上部署了兩個應用程序,則會有不同的類加載器來滿足其類的解析和加載需求。 Tomcat has a document for this

當然,還有一些問題需要使用JDBC驅動程序(每個JVM進程一個)和JNI(給定的庫不能由給定的JVM或這些命令行上的某個JVM加載多次),但是一般工作保持不變。

+0

嗯。謝謝。所以在不同的耳朵/戰爭中使用相同的類別沒有任何問題。謝謝。 – Denis

+0

是的,它不應該是一個問題。再一次,嘗試一下你自己會好很多。 :-) –

+0

好的。這些(JDBC,JNI)情況會是什麼?首次從隨機耳朵/戰爭中加載,然後從緩存中檢索? – Denis