2013-04-24 40 views
2

請考慮以下情形:相同的本地庫

我有兩個Java類,使用不同的系統類加載器加載。我有一個實現了隊列的本地庫。這兩個類將加載相同的庫,並將元素添加到隊列中。可能嗎?如果是這樣,本地庫實現將在這兩個類中共享。

回答

6

根據JNI Specification這是不可能的。

在JDK中,每個類加載器管理自己的一組本機庫。 相同的JNI本地庫不能加載到多個類加載器中。這樣做會導致UnsatisfiedLinkError被拋出。例如,當用於將本機庫加載到兩個類加載器中時,System.loadLibrary將引發UnsatisfiedLinkError

+0

只會發生錯誤如果我嘗試再次加載庫。對? 我可以從不同的類加載器調用庫中的方法嗎? – Reji 2013-04-24 12:44:36

+0

我認爲下面的段落稍有回答:*「此外,本地庫可以在其相應的類加載器被垃圾收集時卸載」*。所以這意味着**如果你要在不同的類加載器中使用這個庫,那麼本地庫可能會被卸載,這將是有問題的。 – maba 2013-04-24 13:05:17

相關問題