2016-03-25 211 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