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