1

OSGiコンテナー(spring-dm)内でJava Advanced Imaging(JAI)を実行しようとしています。JAIライブラリにアクセスできますが、初めてJAIを呼び出すときに次のエラーが発生します。

エラー:mediaLibアクセラレータラッパークラスを読み込めませんでした。純粋なJavaモードで続行します。
発生場所:com.sun.media.jai.mlib.MediaLibAccessor
com.sun.media.jai.mlib.MediaLibLoadException

DLLはクラスパス上にあり、マニフェストではBundle-NativeCodeライブラリとして参照されています。OSGi内でネイティブJAIDLLを実行することは可能ですか?もしそうなら、私は何をする必要がありますか?

(編集:説明)

Windows JAIライブラリをダウンロードし、ダウンロードパッケージからJARとDLLを抽出しました。

メインフェスト:

マニフェスト-バージョン:1.0
バンドル名:Java Advanced Imaging
バンドル-SymbolicName:javax.media.jai
バンドルバージョン:1.1.3
Bundle-ClassPath:libs /、
 jai_codec.jar、
 jai_core.jar、
 mlibwrapper_jai.jar
Bundle-RequiredExecutionEnvironment:JavaSE-1.6
バンドル-NativeCode:libs / mlib_jai_mmx.dll; osname = WindowsXP; プロセッサ=x86、
 libs / mlib_jai_util.dll; osname = WindowsXP; プロセッサ=x86、
 libs / mlib_jai.dll; osname = WindowsXP; プロセッサ=x86
エクスポート-パッケージ:
4

1 に答える 1

2

ブロックの宣言はBundle-NativeCode正しく見えません。OSGi仕様(ダウンロードすることを強くお勧めします-非常に簡単です)によると、単一のプラットフォームのすべてのライブラリを同じ句で指定する必要があるため、次のように変更されます。

Bundle-NativeCode: libs/mlib_jai_mmx.dll; libs/mlib_jai_util.dll; libs/mlib_jai.dll; 
 osname=WindowsXP; 
 processor=x86

一般に、他の場所でバンドルマニフェストを見つけることができる場合は、独自のバンドルマニフェストをロールすることはお勧めしません(これは、ネイティブコード部分を除いて非常に単純です)。この場合、Springリポジトリでそのうちの2つを見つけました。おそらくライセンスの問題が原因で、ネイティブコードの部分は含まれていません。

于 2009-09-29T17:45:18.637 に答える