gpt4 book ai didi

java - 在 MATLAB 中从 Java 加载库时出现 UnsatisfiedLinkError

转载 作者:可可西里 更新时间:2023-11-01 13:28:53 26 4
gpt4 key购买 nike

我一直在将简单的 java 模块集成到 Windows 上的 MATLAB 环境中,并取得了一些成功。最近我遇到了一个尝试加载 dll 的第三方库的问题。

java 类加载器在尝试加载时抛出 UnsatisfiedLinkError:

java.lang.UnsatisfiedLinkError: no <libname> in java.library.path

at java.lang.ClassLoader.loadLibrary(Unknown Source)

at java.lang.Runtime.loadLibrary0(Unknown Source)

at java.lang.System.loadLibrary(Unknown Source)

异常是报告我的“libname”不在 java.library.path 属性中。我已验证该属性确实具有正确的路径,并且 libname.dll 文件存在于该路径中。

我通过两种方式验证了 java.library.path。首先,我只是检查了 MATLAB 命令行上返回的值:

>> java.lang.System.getProperty('java.library.path')

然后,我修改了有问题的 java 方法,以便在调用失败的第三方函数之前打印该值:

System.out.println(System.getProperty('java.library.path'));

双方均确认我的路径值已按预期设置。

我也试过从命令行手动加载库,但失败了,结果相同。

这在 MATLAB 中是不可能的,还是我遗漏了什么?不幸的是,我不是这台机器的管理员,所以我无法尝试将 dll 移动到具有正常工作的 dll 的目录中的老技巧。

如果没有绝对答案,我欢迎任何关于尝试的建议。

平台: Windows XPMATLAB R2009aJava 1.6

最佳答案

你熟悉Process Monitor吗? ? (如果没有,您将很容易了解它是如何工作的)。

下载它。运行。只需启用“显示文件系统 Activity ”(菜单栏右侧的小图标),禁用其他。

然后启动任何导致库尝试加载 dll 的东西。 UnsatisfiedLinkError发生后,停止Process Monitor中的事件捕获。

现在执行 CTRL+F 并搜索它应该加载的 dll 的名称。检查结果列中显示“未找到”或“未找到名称”的(可能是多个)条目以及路径列中的 dll 名称。

现在检查它真正寻找 dll 的位置。也许它附加了一些额外的路径或类似路径,因此找不到它。

关于java - 在 MATLAB 中从 Java 加载库时出现 UnsatisfiedLinkError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1772572/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com