Osgi eclipse:如何从片段包中导出包并使它们对外部包可见?

时间:2014-05-15 16:19:56

标签: java eclipse osgi-fragment

入门情况(没有任何错误):

  • 我有三个不同的包:bunbdle A(称为org.apache.xmlbeans),bundle B和bundle C
  • 捆绑包B导入从捆绑包A导出的一些包
  • bundle B导出一些包(例如包com.prova.xsd.config)
  • bundle C导入bundle B导出的包(例如包com.prova.xsd.config)

现在我将bundle B作为添加指令的bundle A(fragment-host)的一个片段 Fragment-Host:捆绑包B的MANIFEST中的org.apache.xmlbeans

在此更改之后,所有bundle(A,B,C)的MANIFEST.MF中都没有错误,但是在bundle C的类.java中我有编译错误: “无法解析导入com.prova.xsd.config” 与文件头部.java的导入相关联。

有什么问题?我该如何解决?

非常感谢,

安德烈

1 个答案:

答案 0 :(得分:3)

您需要将“Eclipse-ExtensibleAPI:true”添加到主机插件A的清单中。

来自Eclipse Help: OSGi Manifest Bundle

Eclipse-ExtensibleAPI标头

Eclipse-ExtensibleAPI用于指定主机包是否允许片段包 向主机添加其他API。如果主机包想要允许,则应使用此标头 片段以将其他包添加到主机的API。如果这个标题不是 如果指定,则使用默认值'false'。请注意,此标头仅供工具使用 (PDE)为构建构建适当的类路径。 运行时不使用此标头 在运行时,总是允许片段添加其他包,类和 资源到主机的API。 Eclipse-ExtensibleAPI标头必须使用以下内容 句法:

Eclipse-ExtensibleAPI ::= ( 'true' | 'false' )

以下是Eclipse-ExtensibleAPI标头的示例:

Eclipse-ExtensibleAPI: true