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