我正尝试在我的PyDev Jython项目中使用一个编译的Jython库。
我成功地将.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
调用,我无法访问它的源代码。
为什么我的java.library.path
中没有javaHeclib.dll
编辑
将java.library.path
设置为包含dll的目录不允许我使用System.loadLibrary
加载它。
-Djava.library.path="Y:/path/to/dll/;${env_var:PATH}"
(使用正斜杠没有什么不同。)我还尝试在eclipse.ini
中更改默认的VM参数,但没有成功:
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx384m
-Djava.library.path="Y:\path\to\dll\;${env_var:PATH}"
发布于 2012-06-21 06:13:11
我把它弄好了。
供将来参考:
假设您需要的dll在Y:\path\to\dlls\lib\
中。然后将运行配置的工作目录设置为Y:\path\to\dlls\
,并将VM参数设置为包含-Djava.library.path=lib
。
就是这样,它现在应该可以工作了。我不知道为什么以前在java.library.path
中指定绝对路径不起作用,但是设置一个工作目录似乎起到了作用。
也许这是我正在使用的特定库所特有的东西(或者Eclipse是从不同的驱动器上运行的,而不是从该库上运行的)……
发布于 2013-02-02 02:35:28
我认为更好的方法是:
就这样。您不需要手动更改配置中的任何内容。
发布于 2017-06-13 03:10:54
我也有类似的问题,但是Ghost Script dll。即使遵循将文件放入工作目录并遵循说明,它对我也不起作用,请参考标签Ghost4J. java.lang.UnsatisfiedLinkError: Unable to load library 'gsdll64'并使用-Djna.library.path来使其工作。
https://stackoverflow.com/questions/11123274
复制相似问题