2009-09-29 16 views
1

J'essaie d'exécuter Java Advanced Imaging (JAI) dans un conteneur OSGi (spring-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:Exécution de JAI dans OSGi

 
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 JAI natives dans OSGi? Si oui, que dois-je faire?

(edit: 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: 
+0

Il n'y a pas grand chose si info pour continuer. Où avez-vous reçu les paquets JAI? Avez-vous roulé le vôtre? Quels classpath sont les DLL natives - le classpath du bundle? Je suspecte le problème habituel de visibilité de classe ou le mécanisme pour charger la DLL native utilise la méthode de la plate-forme de localiser des bibliothèques (PATH, LD_LIBRARY_PATH, ...) plutôt que du classpath. – SteveD

Répondre

2

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 qu'il devient:

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 de rouler vos propres manifestes de bundle si vous pouvez les trouver ailleurs (celui-ci est assez simple en dehors de la partie code natif). Dans ce cas, je les ai trouvés 2 d'entre eux au printemps repository. Il n'inclut pas la partie de code natif - probablement en raison de problèmes de licence.

+0

Merci, cela fonctionne ... semble être un problème stupide d'avoir rencontré. En général, les Manifestes que je réalise sont gérés par le PDT Eclipse - malheureusement, il n'y a pas de support pour le code natif (au moins à travers l'interface graphique), et je n'ai trouvé aucun bundling du code JAI. –

Questions connexes