Я работаю над проектом, это проект интеграции, мы используем Apache Camel и Apache Karaf. В проекте мне нужно использовать клиентскую библиотеку Jira REST Java.
Итак, я прочитал довольно много различных статей и тем о том, как обернуть библиотеку, не относящуюся к OSGI, в пакет OSGI, но я действительно не уверен, правильно ли я понял.
Итак, я создал POM-файл с зависимостью от необходимой библиотеки. Сделал пакет и попытался развернуть его на Karaf, естественно, Karaf пожаловался на отсутствие пакетов.
Итак, я нашел соответствующую зависимость maven, добавил ее, пакет переходит в <Import-Package>
, а зависимость в <Embed-Dependency>
.
Еще раунд, деплой, найди зависимость, добавь, ... и еще, и еще, пока Karaf не устроит связку.
Это действительно правильно? Мне это кажется довольно сумасшедшим, так что, думаю, я не понял, как обычно :)
Наконец, пакет дошел до стабильной версии, которая была на моем рабочем компьютере, я быстро проверил и пошел домой, там я продолжил, но, странно, тот же POM/пакет, скомпилированный на моем персональном компьютере, не работает, снова жалуется на отсутствие пакета, но на этот раз этот пакет точно есть в POM-файле и наверняка он встроен в пакет, я его там вижу.
Этот отсутствующий пакет на этот раз 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]
Так что теперь я совсем запутался, что не так :(
Пожалуйста, ребята, помогите мне. Спасибо!
Файл POM длинный, поэтому я думаю, что ссылка лучше: http://pastebin.com/j5cmWveG