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

面白いことに、それは Windows で完全に動作しBundle-NativeCode: lib/XpNamedPipeJni.dll; lib/XpNamedPipeJni_64.dllます。問題は、Mac OS 用に別の行を追加したときに発生します。私も試しBundle-NativeCode: lib/libXpNamedPipeJni.dylibました。うまくいきません。

OSGi 仕様 hereからの OS/Processor 値のすべての可能性のある順列を試しました。

4

2 に答える 2

3

解決しました。ライブラリの間違った拡張子を使用していました。拡張子を から に変更したdylibところ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 に答える