OSGI manquant exigence d'erreur
Je suis nouveau sur OSGI et je suis à essayer de comprendre comment je résoudre les erreurs comme celle ci-dessous
org.osgi.cadre.BundleException: non résolus de la contrainte dans le bundle org.foo.serviceBundle [253]: Impossible de résoudre 253.0: manque d'exigence [253.0] forfait; &(package=org.slf4j)(version>=1.6.0)(!(version>=2.0.0)))
J'ai utilisé un archetype maven pour générer un bundle, et a ajouté quelques simples slf4j journalisation de ma classe Activator. Je suis également en utilisant le maven bundle de plug-in comme suit:
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.2.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-Activator>org.shoppingsite.Activator</Bundle-Activator>
</instructions>
</configuration>
</plugin>
J'ai essayé d'autres combinaisons et je reçois un colis ou l'autre, ce qui n'est pas résoluble. Je suis en train de déployer le paquet sur le serveur d'applications GlassFish. Toute aide sera appréciée
Merci
OriginalL'auteur VDev | 2011-12-02
Vous devez vous connecter pour publier un commentaire.
Cela signifie généralement que vous êtes en manque un paquet que les exportations org.slf4j. Voici l'ensemble des flux de travail:
Le maven-bundle-plugin assurez-vous que votre propre projet de manifeste d'importations org.slf4j (car vous en avez besoin).
Les dépendances maven dans votre POM du projet sera assurez-vous que le slf4j artefact est téléchargé
Alors 2 choses peuvent mal se passer:
soit votre compilation a échoué, et la slf4j artefact n'a pas été trouvé (mais je suppose que tu aurais remarqué qu')
ou la slf4 artefact que vous avez téléchargé n'est pas un Manifeste ou n'est pas l'exportation de org.slf4j. Pour le vérifier, il suffit de regarder dans le manifeste de l'org.slf4j bundle. Si vous exécutez des choses directement dans un IDE comme eclipse, vous pourriez vouloir vérifier dans $HOME/.m2/au lieu de trouver l'artefact.
Si votre artefact n'est pas une bonne manifeste, vous devrez soit trouver un autre repo vous pouvez obtenir un bon bundle, ou modifier celui que vous êtes l'obtention et l'installer sur votre dépôt local (et de le déployer sur votre maven local bundle repository (par exemple, nexus) si vous en avez un)
Dernière petite chose: pensez à utiliser le maven-scr plugin au lieu de directement la définition d'activateurs et de découverte de service. Je souhaite que j'avais connu que quand j'ai commencé avec OSGi!
Donc, Miquel, que dois-je rechercher dans le manifeste. Le manifeste ne semblent avoir le nécessaire OSGI déclarations. ~Merci VDev
Vérifiez votre manifeste pour une ligne appelée l'Exportation des Paquets comprend org.slf4j. Si c'est il y, lancez votre application et obtenir de l'accès à la console (désolé, je ne sais pas comment vous le faire dans glassfish). De vérifier ensuite la console de l'aide pour une fonction qui vous permet de la figure (a) si votre bundle "résout", c'est qu'il dispose de tous les paquets dont il a besoin. Il va probablement se plaindre, afin de vérifier (b) les packages exportés par le slf4j bundle. Quelque chose doit être mal, ou vous ne seriez pas obtenir que l'erreur..
OriginalL'auteur Miquel
Si vous ne voulez pas passer par la peine de créer des paquets pour chaque 3ème partie de la bibliothèque que vous utilisez, vous pouvez le compiler dans votre bundle. Essayez
OriginalL'auteur Asa
Je ne suis pas sûr de Grassfish appserver. Dans Fuse ESB en ajoutant des <Import-Package> org.slf4j.*</Import-Package>, nous avons résolu le même problème.
OriginalL'auteur Uday Matta
Ajouter <champ></> des dépendances dans le POM.
Lire http://fusesource.com/docs/ide/7.1/release_notes/release_notes.html
provided
dépendances sont toujours inclus dans la dépendance des calculs par lamaven-bundle-plugin
.OriginalL'auteur Raymond Gao