2011-02-17 35 views
0

我有一個問題。有沒有一種方法可以檢查一個dll是否可以在不加載的情況下加載?我的問題如下:檢查可加載的JNI庫

我正在使用需要加載本機庫的第三方API。但奇怪的是,儘管是「圖書館」,如果無法加載本地圖書館,它仍會撥打System.exit()。雖然我的應用程序依賴於該庫,但我不希望我的應用程序崩潰,即使我無法使用僅作爲應用程序功能的庫(儘管是重要的)。所以在我使用庫之前,我想檢查一下dll是否可以加載。我試圖通過檢查是否從語句System.loadLibrary("LibraryName")中拋出UnsatisfiedLinkError來做到這一點。如果發生錯誤,那麼我不使用該庫。但是,如果它不拋出任何錯誤,我會去使用庫。現在,這樣做後,我得到以下錯誤:

Cannot native library. The libary was already loaded in a different ClassLoader.

昂斯我不能從System.loadLibrary()方法加載庫只有從第三方庫做到這一點。 所以,我的問題是「我怎樣才能檢查一個庫是否可以加載而不實際加載?」

回答

0

如果無法加載庫,則不應調用system.exit()。當我試圖加載一個庫,它不能加載,我得到一個錯誤。是否有可能是你的圖書館沒有正確加載正在殺死過程。檢查這一點的唯一方法是讓一個獨立的進程試圖加載庫並查看會發生什麼。

+0

我正在使用第三方庫[作爲.jar文件]。該jar有一個加載本地庫的類。但是,如果在加載庫時有任何錯誤,它會調用System.exit();另外要使用庫,我必須使jar加載本地庫本身。如果我爲他做,它會給我錯誤。 – 2011-02-17 12:44:04