2

我正在尝试将本机库与我的 Eclipse 插件捆绑在一起。当我使用 提供库的路径时-Djava.library.path,它可以完美运行。

但是,当我将它添加到MANIFEST.MF文件中时,它会抛出一个异常,上面写着,

Exception in thread "Thread-9" java.lang.UnsatisfiedLinkError: no XpNamedPipeJni in java.library.path

中的代码MANIFEST.MF

Bundle-NativeCode: lib/XpNamedPipeJni.dll; lib/XpNamedPipeJni_64.dll; osname=Win32; processor=x86; processor=x86-64, lib/libXpNamedPipeJni.dylib; osname=MacOSX; processor=x86; processor=PowerPC; processor=x86-64

有趣的是,它在带有Bundle-NativeCode: lib/XpNamedPipeJni.dll; lib/XpNamedPipeJni_64.dll. 当我为 Mac OS 添加另一行时,问题就来了。我也试过了Bundle-NativeCode: lib/libXpNamedPipeJni.dylib。不工作。

我在这里尝试了 OSGi 规范中 OS/Processor 值的所有可能排列。

4

2 回答 2

3

解决了。我使用了错误的库扩展名。我将扩展名从dylibto更改为jnilib有效。显然,OS X 上的 Java VM 似乎要求文件扩展名为.jnilib. 关于这背后的原因有什么想法吗?

现在代码看起来像

Bundle-NativeCode: lib/XpNamedPipeJni.dll; osname=Win32; processor=x86, lib/XpNamedPipeJni_64.dll; osname=Win32; processor=x86_64, lib/libXpNamedPipeJni.jnilib; osname=macosx; processor=x86; processor=x86_64; processor=ppc

于 2012-07-17T17:23:53.530 回答
0

如果您的 Eclipse 无法加载 XpNamedPipeJni.dylib(或任何 filename.dylib),那是因为 Eclipse 试图通过调用System.loadLibrary(fileName)从 System 加载它, 而 Eclipse 无法从加载位置找到它该文件在这些位置不存在。

要查看所有 Eclipse 尝试从何处加载它,请在代码中添加以下行:

String locations = System.getProperty("java.library.path");

查看所有位置并将您的文件复制到任何这些位置,(如果位置不存在,请创建并复制)。重新启动eclipse,它现在可以正常工作了。

于 2017-09-01T08:38:11.703 回答