Eclipse java.lang.UnsatifiedLink错误:java.Library.path中没有库

Eclipse java.lang.UnsatifiedLink错误:java.Library.path中没有库,eclipse,macos,eclipse-plugin,java-native-interface,unsatisfiedlinkerror,Eclipse,Macos,Eclipse Plugin,Java Native Interface,Unsatisfiedlinkerror,我正在尝试将本机库与Eclipse插件捆绑在一起。当我用-Djava.library.path提供库的路径时,它工作得非常好 但是,当我将其添加到MANIFEST.MF文件时,它会抛出一个异常,该异常表示 线程“thread-9”java.lang.UnsatifiedLinkError中出现异常:java.library.path中没有XpNamedPipeJni MANIFEST.MF中的代码为 Bundle NativeCode:lib/XpNamedPipeJni.dll;lib/XpN

我正在尝试将本机库与Eclipse插件捆绑在一起。当我用
-Djava.library.path
提供库的路径时,它工作得非常好

但是,当我将其添加到
MANIFEST.MF
文件时,它会抛出一个异常,该异常表示

线程“thread-9”java.lang.UnsatifiedLinkError中出现异常:java.library.path中没有XpNamedPipeJni

MANIFEST.MF
中的代码为

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

有趣的是,它在Windows中与
Bundle NativeCode:lib/XpNamedPipeJni.dll完美结合;lib/XpNamedPipeJni_64.dll
。当我为Mac OS添加另一行时,问题就出现了。我还尝试了绑定NativeCode:lib/libXpNamedPipeJni.dylib。不起作用


我尝试了所有可能的操作系统/处理器值排列。

解决了它。我用错了图书馆的分机。我将扩展名从
dylib
更改为
jnilib
,它成功了。显然,OSX上的JavaVM似乎要求文件扩展名为
.jnilib
。你知道这背后的原因吗

现在代码看起来就像

Bundle NativeCode:lib/XpNamedPipeJni.dll;osname=Win32;处理器=x86,
lib/XpNamedPipeJni_64.dll;osname=Win32;处理器=x86_64,

lib/libXpNamedPipeJni.jnilib;osname=macosx;处理器=x86;处理器=x86_64;processor=ppc

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

要查看所有eclipse尝试加载它的位置,请在代码中添加以下行:

String locations = System.getProperty("java.library.path");
查看所有位置并将文件复制到其中任何位置(如果位置不存在,请创建并复制)。
重新启动eclipse,它现在可以正常工作。

使用别名“Mac OS X”怎么样?这很奇怪。您可以尝试为Mac OS X库添加换行符。如果您的捆绑包仅在Eclipse/Equinox上工作,您可以将您的库放在下面的文件夹结构上,-OS--win32--x86--XpNamedPipeJni.dll,但Mac库在x86和x86_64平台上都可以工作。我是否创建两个文件夹结构,即
os/macosx/x86/lib.dylib
os/macosx/x86_64/lib.dylib
?另外,我添加了换行符。没有变化。不管怎样,以上这些都不起作用。有什么明显的东西我遗漏了吗?