Domanda

Sto cercando di eseguire Java Advanced Imaging (JAI) all'interno di un contenitore di OSGi (primavera-dm). Sono in grado di accedere alle librerie JAI, ma visualizzato il seguente errore quando chiamo GAI per la prima volta:

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

Le DLL sono nel classpath e riferimento come librerie Bundle-NativeCode nel mio manifesto. E 'possibile eseguire le DLL native JAI all'interno OSGi? Se è così, che cosa devo fare?

(edit: chiarimenti)

Ho scaricato la libreria di Windows JAI e estratto JAR e DLL dal pacchetto di download.

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:
È stato utile?

Soluzione

La dichiarazione del blocco Bundle-NativeCode non guardare a destra. In base alle specifiche OSGi (che consiglio vivamente di scaricare - è piuttosto straight-forward), tutte le librerie per una singola piattaforma dovrebbe essere specificato nella stessa clausola, in modo che i cambiamenti a:

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

In generale Non consiglio posizionare il proprio pacco manifesta se si riesce a trovare altrove (questo è abbastanza semplice oltre alla parte di codice nativo). In questo caso, li ho trovati 2 di loro allo Spring repository . Non include la parte di codice nativo -. Probabilmente a causa di problemi di licenza

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top