Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 16:49   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 在MATLAB中从Java加载库时出现UnsatisfiedLinkError

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

尝试加载时,java ClassLoader抛出UnsatisfiedLinkError:

java.lang.UnsatisfiedLinkError: no 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 XP MATLAB R2009a Java 1.6


回答:
刚刚在MATLAB文档中找到了这一点:

指定Sun Java本机方法DLL的搜索路径

MATLAB用于查找Java所需的本机方法库的机制已更改。 MATLAB不再使用系统环境变量来定义这些库的路径。

兼容性注意事项

如果为此目的当前依赖于PATH(对于Windows)或LD_LIBRARY_PATH(对于UNIX)环境变量,则将需要使用如下所述的文件librarypath.txt代替它。

指定Java库路径

Java类可以使用Java方法java.lang.System.loadLibrary(“ LibFile”)动态加载本机方法。为了使JVM软件能够找到指定的库文件,包含它的目录必须在Java库路径上。该路径是在MATLAB启动时启动JVM软件时建立的,并且基于文件的内容

$ matlab / toolbox / local / librarypath.txt

(其中$ matlab是由MATLAB关键字matlabroot表示的MATLAB根目录)。

您可以通过编辑librarypath.txt文件来扩展本机方法库的搜索路径。编辑此文件时,请遵循以下准则:
  • 单独在一行中指定每个新目录。
  • 仅指定目录名称,而不指定DLL文件的名称。 LoadLibrary调用会为您完成此操作。
  • 为了简化跨平台环境中目录的规范,可以使用以下任何宏:$ matlabroot,$ arch和$ jre_home。

更多&回答...
poster 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 01:31


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.