2011-12-09 28 views
0

在我的netbeans桌面應用程序中,我在項目中保存了Rxtx的.dll文件。我可以爲這些.dll文件設置庫路徑嗎?爲jar文件中的dll設置庫路徑

這是項目層次

PROJECTNAME

  • pacakge1

    rxtx 
          rxtxSerial.dll 
          rxtxParall.dll 
    
  • 包2

  • META-INF

在此先感謝。

回答

4

當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中。

+1

是的,DLL加載是由操作系統完成的,如果DLL存儲在一個jar文件中,那麼它們必須在(Windows)文件系統的某處被提取,然後才能被加載。沒有辦法繞過它。 –