0
在我的netbeans桌面應用程序中,我在項目中保存了Rxtx的.dll文件。我可以爲這些.dll文件設置庫路徑嗎?爲jar文件中的dll設置庫路徑
這是項目層次
PROJECTNAME
pacakge1
rxtx rxtxSerial.dll rxtxParall.dll
包2
META-INF
在此先感謝。
在我的netbeans桌面應用程序中,我在項目中保存了Rxtx的.dll文件。我可以爲這些.dll文件設置庫路徑嗎?爲jar文件中的dll設置庫路徑
這是項目層次
PROJECTNAME
pacakge1
rxtx
rxtxSerial.dll
rxtxParall.dll
包2
META-INF
在此先感謝。
當java代碼加載本地庫(通常通過System.load()
完成)時,此調用是對OS的本機調用。 DDL的實際加載由OS完成(如果不是這樣,請糾正我)。在這種情況下,操作系統將需要一個確定的路徑來加載dll。如果DLL在一些jar文件中,操作系統不會識別jar文件結構(它只能被java運行庫解釋),因此當打包到jar中時不會發現這些文件。
只是一個例子,對於一個標準的JDK分佈,所有的類文件被打包在文件rt.jar
,而所有的本機代碼的DLL(插座,AWT等)是在一個單獨的位置(jre/bin
)。所以我的建議是,創建兩個文件一個jar和其他DLL。創建一個ZIP存檔。現在,如果有人需要使用它,必須解壓縮,將jar保存在PATH中的類路徑和DLL中。
是的,DLL加載是由操作系統完成的,如果DLL存儲在一個jar文件中,那麼它們必須在(Windows)文件系統的某處被提取,然後才能被加載。沒有辦法繞過它。 –