【问题标题】:Osgi eclipse: how to export package from a fragment bundle and make them visible to an external bundle?Osgi eclipse:如何从片段包中导出包并使它们对外部包可见?
【发布时间】:2014-05-15 16:19:55
【问题描述】:

启动情况(没有任何错误):

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

现在我将包 B 作为包 A(片段主机)的片段添加指令 Fragment-Host:包 B 的 MANIFEST 中的 org.apache.xmlbeans

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

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

非常感谢,

安德烈亚

【问题讨论】:

  • 你用的是什么IDE?

标签: java eclipse osgi-fragment


【解决方案1】:

您需要在主机插件 A 的 Manifest 中添加“Eclipse-ExtensibleAPI: true”。

来自Eclipse Help: OSGi Manifest Bundle

Eclipse-ExtensibleAPI 头文件

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

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

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

Eclipse-ExtensibleAPI: true

【讨论】:

    猜你喜欢
    • 2017-12-14
    • 2012-02-27
    • 2020-01-27
    • 2011-10-31
    • 1970-01-01
    • 2012-01-26
    • 2015-12-23
    • 2012-10-05
    • 2012-06-29
    相关资源
    最近更新 更多