Ada*_*erg 5 java windows dll matlab shared-libraries
我已经在Windows上将简单的java模块集成到MATLAB环境中并取得了一些成功.最近我遇到了第三方库试图加载DLL的问题.
尝试加载时,java ClassLoader抛出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)
Run Code Online (Sandbox Code Playgroud)
例外是报告我的'libname'不在java.library.path属性中.我已经验证该属性确实具有正确的路径,并且该路径上存在libname.dll文件.
我用两种方式验证了java.library.path.首先,我只是检查了MATLAB命令行返回的值:
>> java.lang.System.getProperty('java.library.path')
Run Code Online (Sandbox Code Playgroud)
然后,我修改了有问题的java方法,在调用失败的第三方函数之前打印该值:
System.out.println(System.getProperty('java.library.path'));
Run Code Online (Sandbox Code Playgroud)
两者都确认我的路径值已按预期设置.
我也尝试从命令行手动加载库,它失败并得到相同的结果.
这是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文件来扩展本机方法库的搜索路径。编辑此文件时,请遵循以下准则:
归档时间: |
|
查看次数: |
5787 次 |
最近记录: |