簡體   English   中英

如何導出在 Eclipse 中嵌入本機庫的可運行 JAR?

[英]How to export a runnable JAR embedding a native library in Eclipse?

我有一個使用本機庫的 Java 應用程序。 當我導出可運行的 JAR 時它工作正常,但我必須將本機庫放在可執行文件的同一文件夾中。

不確定是否存在這樣做的過程,因為它是本機庫,但是,是否存在避免將庫放入同一文件夾並將該庫嵌入到可運行 JAR 中的方法?

我使用 Eclipse,我用來啟用本機庫的成功工作過程如下(這可能對解決此問題的人有所幫助):

  1. 在 Package Explorer 中選擇項目並右鍵單擊;
  2. 構建路徑→配置構建路徑;
  3. 庫選項卡;
  4. JRE 系統庫選項和本機庫位置;
  5. 在右側面板上編輯;
  6. 瀏覽圖書館;
  7. 關閉窗口。

為了詳細說明我在評論中指出的答案,可以在 JAR 中部署本機庫。 但是你必須在你的代碼中提供這一點。 您必須以一種方式編寫代碼

  • 將庫從 jar 中提取到某個臨時位置(通常復制getResourceAsStream()給你的內容)
  • 並使用完整路徑名加載庫(使用load()而不是loadLibrary

例子:

Path tempPath = Paths.get("some/path");
try (InputStream inputStream = myClass.getResourceAsStream("myLibrary")) {
    Files.copy(inputStream, tempPath);
}
System.load(tempPath.toAbsolutePath().toString());

請注意,某些惡意軟件掃描程序會阻止從臨時目錄中加載庫,因此您必須謹慎選擇目標路徑。

看看這里: https : //github.com/mkowsiak/jnicookbook/tree/master/recipes/recipeNo031

這個想法很簡單:

  • 你必須在 JAR 中嵌入本機代碼,
  • 一旦代碼運行,你必須提取庫,
  • 你必須在你的代碼中加載它。

請注意,庫通常是從文件系統加載的,不可能從緩沖區加載它們。 這就是您必須創建臨時位置的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM