我继承了一个需要重新架构的工作大型Java8项目。它构建了一个jar,但是还包括一个示例main(jar中包含 not )和一个深层的libs,包括libs / tree中的一些.dll文件(dll&#39; s还< jar中包含strong> NOT 。
在某些时候,jar中的代码在简单文件名上调用Native.loadLibrary(&#34; fti2x.dll&#34;,fti2xWrapper.class,[Map&lt; String,Integer&gt;]选项)&#34 ; fti2x.dll&#34; - 没有路径组件 - 并且负载成功。这个.dll只位于我计算机上的libs /目录的深处。如何在eclipse 下运行jar ,如果没有指定路径,请在/libs/client/usb/CommLib/amd64/fti2x.dll中找到它?
如果我只将jar,示例main和libs /目录复制到一个新项目,我如何在Eclipse(Mars)中配置它以找到Native.loadLibrary调用的.dll? (只是简单地这样做失败了,所以我错过了一些配置。)
如何在Eclipse之外执行main.class并让它找到.dll?
我是否可能缺少一些设置此路径的Java代码?如果是这样,我该寻找什么?
答案 0 :(得分:0)
有一个系统属性,用于指定JNA用于搜索本机库的路径:jna.library.path
。在库成功加载旧项目之后,尝试打印出它的值以查看它是否正在设置。
This answer解释了如何在Eclipse运行配置中设置系统属性。在Eclipse之外,使用-D
命令行切换到JVM为其指定一个值,例如:
java -Djna.library.path=<some path> YourMainClass