我正在尝试在我的 PyDev Jython 项目中使用已编译的 .jar Java 库。
我成功地将 .jar 添加到 PYTHONPATH 并且能够开始使用自动完成工作进行编码。
该库还需要 .dll 扩展名javaHeclib.dll
,因此我将其添加到项目的 External Libs 部分。
我可以很好地导入库,但是当我尝试访问它的任何功能时出现错误:
java.lang.UnsatisfiedLinkError: java.lang.UnsatisfiedLinkError: no javaHeclib in java.library.path
我在运行配置中添加了一个 VM 参数,但没有成功:
-Djava.library.path="Y:/path/to/javaHeclib.dll;${env_var:PATH}"
我可以使用上面的方法从命令行运行库java.library.path
。
在 PyDev 控制台中进行实验,我注意到我可以使用绝对路径加载 .dll 扩展名,但不能使用相对路径:
>>> import java.lang
>>> java.lang.System.load('Y:/path/to/javaHeclib.dll')
>>> java.lang.System.loadLibrary('javaHeclib')
Traceback (most recent call last):
File "<console>", line 1, in ?
java.lang.UnsatisfiedLinkError: java.lang.UnsatisfiedLinkError: no javaHeclib in java.library.path
不幸的是,图书馆正在使用System.loadLibrary
上面的调用,我无权访问它的源代码。
为什么javaHeclib.dll
不在我的java.library.path
?
编辑
将 设置为java.library.path
包含 dll 的目录不允许我使用System.loadLibrary
.
-Djava.library.path="Y:/path/to/dll/;${env_var:PATH}"
(使用正斜杠没有任何区别。)我还尝试更改默认 VM 参数 in eclipse.ini
,但没有运气:
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx384m
-Djava.library.path="Y:\path\to\dll\;${env_var:PATH}"