启动情况(无任何错误):
- 我有三个不同的包:bunbdle A(称为 org.apache.xmlbeans)、bundle B 和 bundle C
- bundle B import 一些从bundle A导出的包
- bundle B 导出一些包(例如包 com.prova.xsd.config)
- bundle C 导入 bundle B 导出的包(例如包 com.prova.xsd.config)
现在我使包 B 成为包 A 的一个片段(片段主机)添加指令 Fragment-Host:bundle B 的 MANIFEST 中的 org.apache.xmlbeans
此更改后,所有包(A、B、C)的 MANIFEST.MF 中没有错误,但在包 C 的类 .java 中出现编译错误: “导入 com.prova.xsd.config 无法解析” 与文件 .java 头部的导入相关联。
有什么问题?我该如何解决?
非常感谢,
安德里亚
最佳答案
您需要在主机插件 A 的 list 中添加“Eclipse-ExtensibleAPI: true”。
来自 Eclipse Help: OSGi Manifest Bundle :
Eclipse-ExtensibleAPI header
Eclipse-ExtensibleAPI 用于指定主机包是否允许片段包 向主机添加额外的 API。如果主机包想要允许,则应使用此 header 片段以向主机的 API 添加其他包。如果这个标题不是 指定则使用默认值“false”。请注意,此 header 仅由工具使用 (PDE) 为构建构建适当的类路径。 运行时不使用此 header 在运行时,一个片段总是被允许添加额外的包、类和 资源到主机的API。 Eclipse-ExtensibleAPI header 必须使用以下内容 句法:
Eclipse-ExtensibleAPI ::= ( 'true' | 'false' )
以下是 Eclipse-ExtensibleAPI header 的示例:
Eclipse-ExtensibleAPI: true
关于java - Osgi eclipse : how to export package from a fragment bundle and make them visible to an external bundle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23683708/