OSGI fehlende Anforderung Fehler
Ich bin neu auf OSGI und ich versuche herauszufinden, wie ich das beheben von Fehlern, wie unten
org.osgi.Rahmen.BundleException: Ungelöste Einschränkung im bundle org.foo.serviceBundle [253]: Unable to resolve 253.0: fehlende Anforderung [253.0] Paket; (&(Paket=org.slf4j)(version>=1.6.0)(!(version>=2.0.0)))
Verwendete ich ein maven archetype zu generieren, ein Bündel und ein paar einfache slf4j logging meinen Activator-Klasse. Ich bin auch mit dem maven-bundle-plugin wie folgt:
<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>
Ich habe versucht, andere Kombinationen und ich bekomme ein Paket oder die anderen, die nicht auflösbar. Ich bin versucht, die Bereitstellung der Bündel auf GlassFish appserver. Jede Hilfe wird dankbar sein
Danke
Du musst angemeldet sein, um einen Kommentar abzugeben.
Normalerweise bedeutet dies, dass Ihnen fehlt ein bundle für den Export von org.slf4j. Hier ist der ganze workflow:
Maven-bundle-plugin stellen Sie sicher, dass Sie Ihr eigenes Projekt manifest Importe org.slf4j (da braucht man es).
Maven-Abhängigkeiten in Ihrem Projekt POM wird, stellen Sie sicher, dass die slf4j Artefakt heruntergeladen
Dann 2 Dinge, die schief gehen können:
entweder Ihre Kompilierung fehlgeschlagen und die slf4j Artefakt nicht gefunden (aber ich nehme an, Sie würde bemerkt haben, dass)
oder die slf4 Artefakt, das Sie heruntergeladen haben, nicht ein Manifest oder nicht exportieren org.slf4j. Check it out, schauen Sie einfach in dem manifest der org.slf4j-bundle. Wenn Sie die Dinge direkt in eine IDE wie eclipse, möchten Sie vielleicht zu prüfen, die in $HOME/.m2/statt zu finden, das Artefakt.
Wenn Ihr Artefakt hat kein richtiges manifestieren, musst du entweder einige andere repo erhalten Sie eine ordnungsgemäße Bündel aus, oder ändern Sie den, den Sie abrufen und installieren Sie es auf Ihrem lokalen repository (und implementieren Sie es auf Ihrem lokalen maven-bundle-repository (z.B. nexus), wenn Sie eine haben)
Letzte kleine Sache: erwägen Sie die Verwendung der maven-scr-plugin, statt es direkt zu definieren Aktivatoren und service discovery. Ich wünschte, ich hätte bekannt, als ich anfing mit OSGi!
Wenn Sie nicht wollen, zu gehen durch die Mühe der Erstellung von bundles für alle 3rd-party-Bibliothek, die Sie verwenden, kompilieren Sie es in Ihr Bündel. Versuchen
Ich bin mir nicht sicher über Grassfish Anwendungsserver. In Fuse ESB durch hinzufügen <Import-Package> org.slf4j.*</Import-Package>, beschlossen wir das gleiche Problem.
Hinzufügen <Anwendungsbereich>Voraussetzung</scope> Abhängigkeiten in der POM.
Lesen http://fusesource.com/docs/ide/7.1/release_notes/release_notes.html
provided
Abhängigkeiten sind noch enthalten in Abhängigkeit der Berechnungen von dermaven-bundle-plugin
.