2013-03-30 39 views
1

enter image description here如何使用jar分發本機庫?

這是我最終部署我的軟件時想要創建的目錄結構。這是一個具有網絡攝像頭功能的Java聊天客戶端,以及我正在使用LTI-CIVIL的網絡攝像頭。

有人告訴我,我無法從JAR中直接使用DLL,我必須將它們提取到某處。很酷。但是,我無法得到我的頭是如何使它工作

LTI在他們的網站上提供了大量zip文件。如果您使用的是Eclipse,則需要將路徑設置爲本地庫的相應文件夾。但是,這限制了我Eclipse,並阻止我將JAR發佈給我的朋友。顯然,我現在必須指向該文件夾,並可能加載文件,可編程的

我是一個初學者,所以如果有人可以download LTI-CIVIL,看看目錄結構,讓我知道如何實現我試圖做到這一點,將不勝感激。 AFAIK,對於我的32位Windows,我需要指向native/win32-x86文件夾。

我想要做的是在內存中加載適當的文件,以便我可以提供攝像頭功能。我想避免安裝程序,只需提供一個具有上述目錄結構的zip文件,以便人們可以提取,從文件夾運行jar文件並開始聊天。

澄清:我想送一個圖書館 jar文件,而不是在罐子。我知道提取和使用的dll從罐子是艱難

+2

解壓縮dll並加載它們非常棘手。你可以看一下使用這種技術的項目'jogamp.org'。不過,我強烈考慮使用NSIS或其他安裝程序生成器。 – Gene

+0

@Gene不,因爲dll將在文件夾中並且用zip文件發送,所以人們可以使用'7Z'或'Winzip'來提取:)閱讀說明 –

回答

3

我猜想,這是不是你自己的代碼加載本地庫(System.load),它們是由第三方jar(lti-裝公民)。

在這種情況下,您必須在lti-civil嘗試加載本地庫之前適當設置環境變量LD_LIBRARY_PATH

或者:

  • 隨着發射腳本(如蝙蝠),運行Java之前設定的變量,或設置系統屬性,是這樣的:

    java -jar your.jar -Djava.library.path=/path/to/native/folder 
    
  • 運行時間。在你的程序的入口點。 這有點「hackish」,但它的工作原理。

    檢查此鏈接,例如:

    http://nicklothian.com/blog/2008/11/19/modify-javalibrarypath-at-runtime/

既然你不知道確切的路徑事前,在這兩種情況下,你也必須尋找到本地庫位於正確的路徑。

如果路徑到庫是相對於罐/發射器的路徑,則找到可執行的電流路徑:在.BAT發射

然後,你可以假設庫位於相對於此(../native)的路徑中,只需計算路徑(也可將其展開爲絕對路徑)。

在計算出絕對路徑後,按照答案的第一部分所述設置環境/系統屬性。

+0

我正在使用Eclipse –

+0

IDE不相關。您只需在執行時設置路徑,無論是在自定義啓動程序中還是在Java運行時。 – gargc

+0

我已經擴大了答案。順便說一句,那些只是想法。當說一個.bat文件時,它可能是一個不同的東西,Windows腳本,bash腳本,這取決於你。 – gargc