我正在研究基于BNDTools的OSGI项目:https://github.com/jafre13/iss-product
我的项目需要一个基于非OSGI的库(aliasi-lingpipe-https://mvnrepository.com/artifact/de.julielab/aliasi-lingpipe/4.1.0)。
这是问题开始的地方。首先,我试图直接从Maven存储库中添加罐子,因为BNDTOOLS据说与Maven存储库兼容,但似乎从"存储库浏览器"中使用。即使将Maven Central插件添加到build.bnd文件时,如http://bnd.bndtools.orgs.org/plugins/maven.html中所述。
放弃让Maven工作,我尝试以最大的方式进行操作,然后自己下载罐子,并按照此处指定的普通罐子添加:http://bndtools.org/faq.html(6我如何能做依赖于构建时间的普通罐子文件?)
这次罐子得到了识别,我可以在代码中开始使用它。但是,一旦您启动了OSGI框架,一切都会再次崩溃,因为它正在尝试解决非OSGI类路径,从而导致类似的接线错误:
无法解决捆绑包:[slf4j.api-1.7.25 org.osgi.framework.bundleexception:无法解析slf4j.api [6](r 6.0):缺少要求[SLF4J.API [6](R 6.0)] OSGI.WIRING.PACKAGE;(&(osgi.wiring.package = org.slf4j.impl)(版本> = 1.6.0))未解决 要求:[[Slf4j.api [6](r 6.0)] Osgi.Wiring.package; (&(osgi.wiring.package = org.slf4j.impl)(版本> = 1.6.0)],] dk.sdu.sso.sred-0.0.0.0.201712041036 org.osgi.framework.bundleexception: 无法解析dk.sdu.sso.sred [7](r 7.0):缺失要求 [dk.sdu.sso.sred [7](r 7.0)] osgi.wiring.package; (osgi.wiring.package = com.aliasi.classify)未解决的要求: [[dk.sdu.sso.sred [7](r 7.0)] osgi.wiring.package; (osgi.wiring.package = com.aliasi.classify)]
因此,在这一点上,我完全被阻止了,无法继续进行。我希望有人拥有OSGI经验的人可以在这里有所帮助。
问候,谢谢。
通过在构建时间添加jar,您可以编译但不能运行。
在Build Bnd期间,您将看到您需要jar中的软件包,并为其创建Import-pake-ackage语句。因此,在这种状态下,您需要部署导出软件包的捆绑包。实际上,这意味着您必须从罐子里创建一个捆绑包。
另一个选项是将罐子嵌入您自己的捆绑包中。这可以通过添加所需的软件包作为私人软件包来完成。然后,BND将自动嵌入这些。如果罐子实际上仅在内部使用,则此方法效果很好。