Wie man eine Bibliothek OSGIfy

Ich arbeite an einem Projekt, es ist ein Integrationsprojekt, wir verwenden Apache Camel und Apache Karaf. Im Projekt muss ich das verwendenJira REST Java-Client-Bibliothek.

Ich habe also eine Menge verschiedener Artikel und Threads darüber gelesen, wie man eine Nicht-OSGI-Bibliothek in ein OSGI-Bundle packt, bin mir aber nicht sicher, ob ich es richtig verstanden habe.

Daher habe ich eine POM-Datei mit einer Abhängigkeit von der benötigten Bibliothek erstellt. Hat ein Paket erstellt und versucht, es Karaf zur Verfügung zu stellen, hat sich Karaf natürlich über fehlende Pakete beschwert.

Also, ich habe die entsprechende Maven-Abhängigkeit gefunden und hinzugefügt, das Paket geht rein<Import-Package> und Abhängigkeit in<Embed-Dependency>.

Noch eine Runde, bereitstellen, Abhängigkeit finden, hinzufügen, ... und immer wieder, bis Karaf mit dem Bundle klar kommt.

Ist das wirklich richtig? Es scheint mir ziemlich verrückt zu sein, also schätze ich, dass ich es nicht wie gewöhnlich verstehe :)

Endlich wurde das Paket stabil, das sich auf meinem Arbeitscomputer befand. Ich überprüfte es schnell und ging nach Hause. Dort fuhr ich fort, aber seltsamerweise funktionierte dasselbe POM / Paket, das auf meinem Personalcomputer kompiliert wurde, nicht. Ich beschwerte mich erneut über das Fehlen eines Pakets. Aber dieses Mal ist dieses Paket sicher in der POM-Datei und sicher in das Paket eingebettet. Ich kann es dort sehen.

Dieses fehlende Paket ist diesmal org.apache.commons.codec.

org.osgi.framework.BundleException: Unresolved constraint in bundle jiraclient.bundle [134]: Unable to     resolve 134.0: missing requirement [134.0] osgi.wiring.package; (osgi.wiring.package=org.apache.commons.codec)
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:3826)[org.apache.felix.framework-4.0.3.jar:]
    at org.apache.felix.framework.Felix.startBundle(Felix.java:1868)[org.apache.felix.framework-4.0.3.jar:]
    at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:944)[org.apache.felix.framework-4.0.3.jar:]
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1247)[6:org.apache.felix.fileinstall:3.2.6]
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1219)[6:org.apache.felix.fileinstall:3.2.6]
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.startAllBundles(DirectoryWatcher.java:1208)[6:org.apache.felix.fileinstall:3.2.6]
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:503)[6:org.apache.felix.fileinstall:3.2.6]
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:291)[6:org.apache.felix.fileinstall:3.2.6]

Also, jetzt bin ich total verwirrt, was ist los :(

Bitte, Jungs, helft mir. Vielen Dank!

Die POM-Datei ist lang, daher ist der Link vermutlich besser:http://pastebin.com/j5cmWveG

Antworten auf die Frage(1)

Ihre Antwort auf die Frage