我正在开发一个项目,它是集成项目,我们正在使用 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