2016-03-25 209 views
2

我繼承了工作需要重新構建的大型Java8項目。它構建了一個jar文件,但還包含一個示例main(不包含在jar中的)以及一個深層的lib庫,包括libs/tree中的一些.dll文件(包含在jar中的dll的不是)。Eclipse如何設置Native.loadLibrary路徑?

在某些時候,jar中的代碼調用簡單文件名「fti2x.dll」上的Native.loadLibrary(「fti2x.dll」,fti2xWrapper.class,[Map < String,Integer>]選項) - 沒有路徑組件 - 並且加載成功。此.dll只位於我的計算機上的libs /目錄的深處。如何在日食下運行jar,,發現這是在/libs/client/usb/CommLib/amd64/fti2x.dll中,而沒有指定它的路徑?

如果我僅將jar,示例main和libs /目錄複製到新項目中,如何在Eclipse(Mars)中配置它以查找Native.loadLibrary調用的.dll? (只是簡單地這樣做失敗,所以我錯過了一些配置。)

我該如何執行Eclipse以外的main.class,並找到.dll?

是否可能有一些Java代碼我缺少設置此路徑?如果是這樣,我尋找什麼?

回答

0

有一個系統屬性用於指定JNA用於搜索本機庫的路徑:jna.library.path。嘗試在庫成功加載舊項目之後打印出它的值,看看它是否正在設置。

This answer解釋瞭如何在Eclipse運行配置中設置系統屬性。在Eclipse之外,使用-D命令行切換到JVM爲其指定值,例如

java -Djna.library.path=<some path> YourMainClass