在Java中加载本机libs时如何调试问题?

在Java中加载本机libs时如何调试问题?,java,java-native-interface,Java,Java Native Interface,我有一个关于JNI和Java的问题。事情是这样的:客户希望我们在他的系统上安装一个特定的应用程序。此应用程序使用本机LIB,但客户端不想将这些LIB放在他的系统文件夹中,原因我真的不知道或不理解,但无法更改 为了避免这个问题,我尝试使用-Djava.library.path启动JVM,将正确的DLL放入其中。但事实是,当我尝试启动我的项目时,我有一个新的想法。从我看到的情况来看,问题不在调用的主dll中(因为文件显然存在,我在调试时看到了它),我认为这一定是第一个dll链接的一些LIB有问题,但

我有一个关于JNI和Java的问题。事情是这样的:客户希望我们在他的系统上安装一个特定的应用程序。此应用程序使用本机LIB,但客户端不想将这些LIB放在他的系统文件夹中,原因我真的不知道或不理解,但无法更改

为了避免这个问题,我尝试使用
-Djava.library.path
启动JVM,将正确的DLL放入其中。但事实是,当我尝试启动我的项目时,我有一个新的想法。从我看到的情况来看,问题不在调用的主dll中(因为文件显然存在,我在调试时看到了它),我认为这一定是第一个dll链接的一些LIB有问题,但我不知道如何找到缺少的dll

你知道如何解决这个问题吗?

我的第一个调用端口(即使对于JNI调试来说)始终是。如果没有其他内容,它将告诉您DLL所依赖的每个其他DLL


是Linux的等效参数。

我认为该参数用于指定目录,而不是文件。因此,如果您的dll是
c:\mylibs\lib1.dll
,则必须将其值设置为
c:\mylibs

我不知道它是否允许多条路径。让我查一查

编辑

该参数确实允许多条路径

参见中的第2.7节


它没有指定格式,但我想您可以使用与类路径中相同的分隔符。它说您也可以使用PATH系统变量。

尝试了多个路径,请输入目录。只是有些东西还没找到。哦,好的。异常没有说“ModuleName丢失”?没有,它说我知道存在的类有问题,但我不知道更多细节。它看起来很有希望。亚当·巴特金:为了将来的读者,我冒昧地在你的回复中添加了ldd,希望你不会介意。