Rob*_*ati 20 eclipse jython pydev java.library.path
我正在尝试在PyDev Jython项目中使用已编译的.jar Java库.
我成功地将.jar添加到了PYTHONPATH,并且能够开始使用自动完成工作进行编码.
该库也需要.dll扩展名javaHeclib.dll,因此我将其添加到项目的External Libs部分.
我可以很好地导入库,但是当我尝试访问它的任何函数时出现错误:
java.lang.UnsatisfiedLinkError: java.lang.UnsatisfiedLinkError: no javaHeclib in java.library.path
Run Code Online (Sandbox Code Playgroud)
我在运行配置中添加了一个VM参数,没有运气:
-Djava.library.path="Y:/path/to/javaHeclib.dll;${env_var:PATH}"
Run Code Online (Sandbox Code Playgroud)
我可以使用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
Run Code Online (Sandbox Code Playgroud)
不幸的是,该库正在使用System.loadLibrary上面的调用,我无法访问其源代码.
为什么javaHeclib.dll不在我的java.library.path?
编辑
设置java.library.path到包含dll的目录不允许我使用它加载它System.loadLibrary.
-Djava.library.path="Y:/path/to/dll/;${env_var:PATH}"
Run Code Online (Sandbox Code Playgroud)
(使用正斜杠没有什么区别.)我也尝试更改默认的VM args eclipse.ini,没有运气:
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx384m
-Djava.library.path="Y:\path\to\dll\;${env_var:PATH}"
Run Code Online (Sandbox Code Playgroud)
小智 45
我认为更好的方法是:
而已.您无需手动更改配置中的任何内容.
我得到了这个工作.
备查:
说你需要的DLL是Y:\path\to\dlls\lib\.然后将Run Configuration的工作目录Y:\path\to\dlls\设置为并将VM参数设置为include -Djava.library.path=lib.
就是这样,现在它应该可行了.我不知道为什么指定一个绝对路径java.library.path以前没有工作,但设置工作目录似乎已经完成了.
也许这是我正在使用的特定库所特有的(或者Eclipse是从与库不同的驱动器运行的)...