JNA java.lang.UnsatisfiedLinkError:无法加载库'/盎司百万分之一';

JNA java.lang.UnsatisfiedLinkError:无法加载库'/盎司百万分之一';,java,jna,Java,Jna,因此,我有一个使用一系列外部C.dlls的项目,在Netbeans中运行时效果很好,但是当我尝试单独运行.jar时,我得到了以下错误: 线程“thread-3”java.lang.UnsatifiedLinkError中出现异常:无法加载库'./ounpmp':找不到指定的模块 我以前遇到过这种情况,原因有几个: 1) 找不到文件。 2) 找不到另一个.dll依赖的.dll。 3) 尝试用32位JRE加载64位.dll(反之亦然) 有没有办法获得更好的错误消息来查明发生了什么?JNI给出了更好的

因此,我有一个使用一系列外部C
.dll
s的项目,在Netbeans中运行时效果很好,但是当我尝试单独运行
.jar
时,我得到了以下错误:

线程“thread-3”java.lang.UnsatifiedLinkError中出现异常:无法加载库'./ounpmp':找不到指定的模块

我以前遇到过这种情况,原因有几个:

1) 找不到文件。 2) 找不到另一个.dll依赖的.dll。 3) 尝试用32位JRE加载64位.dll(反之亦然)


有没有办法获得更好的错误消息来查明发生了什么?JNI给出了更好的错误,但我现在还不能更改这些错误。

当您在jar文件中启动主类时,您是如何运行它的,并设置了jna.library.path


如果您的
jna.library.path
指向正确DLL的位置,则您不应得到这些错误。

出现此错误消息的人:无法加载库。/ounpm'应该被枪毙;)您的#2原因(未找到另一个.DLL…)是我的“
…UnsatifiedLinkError…
”实例的原因。通过使用名为“DependencyWalker”的工具并指定foobar.DLL作为要检查的文件,我能够解决这个问题。该工具给了我一个foobar.DLL依赖的文件列表,但它没有访问权限。我做了一个聪明的猜测,哪一个最有可能是错误的原因,并得到了幸运,因为获得了一份副本,消除了我的错误。即使还有8个其他文件对foobar.DLL不可用,我也不会在Netbeans或命令行中设置jna.library.path。它是在Netbeans中自动为我设置的吗?另外,“.”是否不自动位于path?System.setProperty(“jna.library.path”,”)中;使用“.”中的.dll似乎也不起作用。哦,我只是使用java-jar“NAVAID.jar”运行,当在Netbeans中运行时没有设置它,它说jna.library.path为null,但仍然有效。