"Export-Package: ."是什么意思?



想象一下带有软件包org.acme.foo.bar的Eclipse插件(分别OSGI捆绑包(。

可以导出"。例如请参阅以下 subtest.mf 摘要:

Export-Package: .,
 org.acme.foo.bar

编译器对此没有任何问题,因此这似乎是合法的出口。

它做什么?与以下内容有什么区别("。"未导出(?

Export-Package: org.acme.foo.bar

.默认软件包,但是根据OSGI Core,Release 6规范 .不是Export-Package 的有效值包装名称必须以字母开头:

export-package :: = export(','export(*
export :: = package-names (';'参数(*
package-names :: = package-name(';'' package-name(*
package-name :: = unique-name
unique-name :: = = 标识符('。'标识符(*

标识符:: = jletter jletterordigit *
jletter :: =<请参阅Java语言规范 javaletter的第三版>
jletterordigit :: =<请参阅 Java语言规范第三版 javaletterordigit >

因此,最好没有默认包:

Export-Package: org.acme.foo.bar

尽管eclipse subtest.mf验证允许'。根据OSGI规范无效。这似乎是指默认包,但这不是一个明智的导出。

这似乎由Eclipse Bug 366800确认,该错误报告了使用'。像这样,在'org.eclipse.datatools.sqltools.parsers.sql.query'插件中。该错误被接受为错误和"。删除。

在OSGI Spec(v6(中找不到它。

在Eclipse中尝试了一个示例(Oygen.2(。创建了两个插件(又称捆绑包(,一个"提供商",另一个"消费者"。提供商导出默认软件包,在该软件包中包含一个公共类A。

=>无法从插件"提供商"访问。Eclipse建议导出软件包''。调用该选项不会更改任何内容。保留错误。

我建议不使用此。

最新更新