【问题标题】:How does Eclipse set Native.loadLibrary path?Eclipse 如何设置 Native.loadLibrary 路径?
【发布时间】:2016-03-25 19:39:04
【问题描述】:

我继承了一个工作需要重新架构的大型 Java8 项目。它构建了一个 jar,但还包括一个示例 main(not 包含在 jar 中)和一个深层库树,包括 libs/ 树中的一些 .dll 文件(dll 也 NOT 包含在 jar 中)。

在某些时候,jar 中的代码在简单文件名“fti2x.dll”上调用 Native.loadLibrary("fti2x.dll", fti2xWrapper.class, [Map] options) -- 使用没有路径组件——加载成功。这个 .dll 仅位于我计算机上的 libs/ 目录的深处。 在 eclipse 下运行的 jar 是如何在没有指定路径的情况下发现它位于 /libs/client/usb/CommLib/amd64/fti2x.dll 中的?

如果我只将 jar、示例 main 和 libs/ 目录复制到新项目中,如何在 Eclipse(Mars) 中对其进行配置以找到 Native.loadLibrary 调用的 .dll? (只是这样做会失败,所以我缺少一些配置。)

如何在 Eclipse 之外执行 main.class 并让它找到 .dll?

我是否可能缺少一些设置此路径的 Java 代码?如果是这样,我要寻找什么?

【问题讨论】:

    标签: java eclipse dll jar java-8


    【解决方案1】:

    有一个系统属性用于指定 JNA 用于搜索本机库的路径:jna.library.path。尝试在旧项目中成功加载库后立即打印其值,以查看是否正在设置。

    This answer 解释了如何在 Eclipse 运行配置中设置系统属性。在 Eclipse 之外,使用 JVM 的 -D 命令行开关为其指定一个值,例如

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

    【讨论】:

      猜你喜欢
      • 2014-03-05
      • 2014-09-09
      • 2014-03-06
      • 2015-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-02
      • 1970-01-01
      相关资源
      最近更新 更多