Question

Je suis en train d'exécuter Java Advanced Imaging (JAI) dans un conteneur OSGi (printemps-dm). Je suis en mesure d'accéder aux bibliothèques jaï, mais l'erreur suivante quand je l'appelle pour la première JAI du temps:

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

Les DLL sont sur le chemin de classe et référencées comme les bibliothèques Bundle-NativeCode dans mon Manifest. Est-il possible d'exécuter les DLL natives dans OSGi IMA? Si oui, que dois-je faire?

(modifier: précisions)

J'ai téléchargé la bibliothèque de Windows et extrait JARs JAI et DLLs du package de téléchargement.

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:
Était-ce utile?

La solution

La déclaration du bloc Bundle-NativeCode ne semble pas juste. Selon la spécification OSGi (que je vous recommande fortement de télécharger - il est assez simple), toutes les bibliothèques pour une plate-forme unique doit être spécifiée dans la même clause, de sorte que les changements à:

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

En général, je ne recommande pas rouler votre propre paquet manifeste si vous pouvez les trouver ailleurs (celui-ci est assez simple en plus la partie de code natif). Dans ce cas, je les ai trouvé 2 d'entre eux au printemps . Elle ne comprend pas la partie de code natif -. Probablement en raison de problèmes de licence

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top