我在导入 OSGi 包中的包时遇到问题。
调用的包org.semanticweb.HermiT.datatypes.xmlliteral
包含在 jar 文件org.semanticweb.HermiT.jar
中。这个 jar 包含在我的目标定义中,并在我的运行配置中选择。我的目标将其识别为 OSGi 捆绑包,因此这不应该是问题。当我尝试在自己的包中导入包时,我收到一条错误消息,提示没有包导出包。谁知道可能是什么问题?
检查“org.semanticweb.HermiT.jar”的标准下载,它没有导出包。因此,JAR 中的任何包都不能被其他 OSGI 组件使用。
更新:
pax-url 包装插件可以帮助您将非 osgi JAR 包装到 osgi 包中并添加任意 MANIFEST 行。
https://ops4j1.jira.com/wiki/display/paxurl/Wrap+Protocol
他们不包括 Export-Package 也可能是有原因的。您可能想直接询问创建者,以确保您没有自找麻烦。
您也可以只更新您拥有的 JAR,然后在部署时始终使用它。实际上有很多选择。
你还可以看到这个项目是如何做到的:
他们创建一个 pom.xml 并使用 maven bundle 插件提供他们的 OWN 清单条目。