Frage

Ich versuche, Java Advanced Imaging (JAI) innerhalb eines OSGi-Container (feder dm) zu laufen. Ich bin in der Lage, die JAI-Bibliotheken zugreifen, aber die folgende Fehlermeldung, wenn ich JAI zum ersten Mal aufrufen:

Error: Could not load mediaLib accelerator wrapper classes. Continuing in pure Java mode.
Occurs in: com.sun.media.jai.mlib.MediaLibAccessor
com.sun.media.jai.mlib.MediaLibLoadException

Die DLLs sind auf dem Classpath und als Bundle-Native Bibliotheken in meinem Manifest verwiesen. Ist es möglich, die nativen JAI DLLs innerhalb OSGi laufen? Wenn ja, was muss ich tun?

(edit: Präzisierungen)

ich die Windows-JAI Bibliothek heruntergeladen und extrahierte JAR-Dateien und DLLs aus dem Download-Paket.

Mainfest:

Manifest-Version: 1.0
Bundle-Name: Java Advanced Imaging
Bundle-SymbolicName: javax.media.jai
Bundle-Version: 1.1.3
Bundle-ClassPath: libs/,
 jai_codec.jar,
 jai_core.jar,
 mlibwrapper_jai.jar
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-NativeCode: libs/mlib_jai_mmx.dll; osname=WindowsXP; processor=x86, 
 libs/mlib_jai_util.dll; osname=WindowsXP; processor=x86, 
 libs/mlib_jai.dll; osname=WindowsXP; processor=x86
Export-Package:
War es hilfreich?

Lösung

Die Deklaration des Bundle-NativeCode Block sieht nicht richtig. Gemäß der OSGi-Spezifikation (die ich Ihnen sehr empfehlen Download - es ist ziemlich straight-forward), alle Bibliotheken für eine einzelne Plattform sollte in derselben Klausel angegeben werden, so dass ändert es an:

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

Generell empfehle ich nicht Ihr eigenes Bündel rollen manifestiert, wenn man sie an anderer Stelle finden (dies ist ziemlich einfach neben dem nativen Code-Teil). In diesem Fall fand ich sie zwei von ihnen im Frühling Repository . Nicht enthalten ist der native Teil Code -. Vermutlich wegen Lizenzproblemen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top