2012-02-01 46 views
0

我想從Linux系統導入IntelliJ Java Web應用程序項目(Maven項目)到一個Windows系統。這個java程序依靠2個外部庫運行。IntelliJ java.lang.UnsatisfiedLinkError:C: User ... java_bridge.dll:無法找到從屬庫

在linux系統上,當我運行我的測試用例(併成功通過)時,這兩個庫都可以正常加載,但是當我移至Windows系統時,其中一個庫不能正常工作(並且我確實確保得到approproaite窗口二進制文件)。

我不斷收到錯誤

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Users\Admin\Desktop\SAINT\Packages\cellml-sdk-1.9\lib\cellml_java_bridge.dll: Can't find dependent libraries 

在這一點上,我不知道我做錯了,因爲.dll文件出現在目錄中。 .dll的位置也出現在windows PATH變量中,並且我使用-Djava.library.path = C:\ Users \ Admin \ Desktop \ SAINT \ Packages \ cellml-sdk-1.9 \ lib指定給java

感謝

回答

0

查看事件日誌中的Windows並排(SxS)消息。他們可能會指向失蹤的DLL。如果沒有,使用dependency walker

+0

好的,所以我運行了D.Walker,它給了我3個缺失的依賴關係。我已經將這些DLL的位置添加到PATH,但依賴步行者仍然告訴我它找不到它們。有什麼建議麼? – 2012-02-01 03:35:50

+0

啊,DW很難用。你必須揣摩它來試圖弄清楚發生了什麼。 Evenlog通常是更容易的選擇。如果這不起作用,你也可以從sysinternals中嘗試進程監視器,它會顯示你正在嘗試在PATH中查找DLL並獲取找不到文件的錯誤。 – 2012-02-01 03:41:04

+0

好吧,有很多東西,我有點過濾到我跑失敗測試的時間。我在尋找什麼樣的信息? – 2012-02-01 03:55:03

0

錯誤消息說:無法找到依賴庫。您擁有的DLL需要其他DLL,並且它們需要位於PATH環境變量中的目錄中,而不是java.library.path。

要查看依賴關係是什麼,可以使用objdump。

您尚未將完整路徑添加到PATH的.dll文件,對嗎?只需將包含依賴項的目錄放入路徑即可。

+0

有沒有一種方法,我可以找出哪些DLL是必需的,他們應該在哪裏。當我在linux上這樣做時,它變得更簡單了...... – 2012-02-01 02:46:58