我遇到了与JNI和Java相关的问题。事情就是这样:客户希望我们在他的系统上安装某个应用程序。这个应用程序使用本机库,但客户端不希望将这些库放在他的系统文件夹中,原因我并不真正了解或理解,但无法更改。
为了避免这个问题,我尝试使用-Djava.library.path
启动JVM,并在其中添加正确的dll。但事实是,当我尝试启动我的项目时,我有一个UnsatisfiedLinkError
。从我所看到的,问题不是在主dll调用(因为文件显然存在,我在调试时看到它),我认为必须是这个第一个dll链接的一些库有问题,但我不喜欢我不知道如何找到丢失的dll。
关于如何解决这个问题的任何想法?
答案 0 :(得分:3)
我的第一个调用端口(即使是JNI调试)总是Dependency Walker。如果没有别的,它会告诉你DLL所依赖的每个其他DLL。
ldd
与Linux等效。
答案 1 :(得分:0)
我认为该参数用于指定目录,而不是文件。因此,如果您的dll为c:\mylibs\lib1.dll
,那么您必须将其值设置为c:\mylibs
。
我不知道它是否允许多条路径。我来看看。
修改强>
该参数允许多个路径。
请参阅http://java.sun.com/docs/books/jni/html/start.html
中的第2.7节它没有指定格式,但我想你可以使用与classpath相同的分隔符。它说你也可以使用PATH系统变量。