"Export-Package: ." 是什么意思?
What Does "Export-Package: ." Mean?
想象一个带有包 org.acme.foo.bar
.
的 Eclipse 插件(resp.OSGi 包)
可以导出“.”例如请参阅以下 MANIFEST.MF 片段:
Export-Package: .,
org.acme.foo.bar
编译器对此没有任何问题,因此它似乎是一个合法的出口。
它有什么作用?跟下面的(“.”不导出)有什么区别?
Export-Package: org.acme.foo.bar
尽管 Eclipse MANIFEST.MF 验证允许“.”根据 OSGi 规范,它是无效的。这似乎是默认包的意思,但这不是导出的明智之举。
这似乎已被 Eclipse 错误 366800 证实,该错误报告使用了“.”。在 'org.eclipse.datatools.sqltools.parsers.sql.query' 插件中就像这样。该错误被接受为错误和“。”删除。
.
是 默认包 但根据 OSGi Core, Release 6 specification .
不是 Export-Package
因为包名必须以字母开头:
Export-Package ::= export ( ',' export)*
export ::= package-names
( ';' parameter )*
package-names ::= package-name ( ';'
package-name )*
package-name ::= unique-name
unique-name ::=
identifier ( '.' identifier )*
identifier ::= jletter
jletterordigit *
jletter ::= <see Java Language Specification
Third Edition for JavaLetter>
jletterordigit ::= <see
Java Language Specification Third Edition for
JavaLetterOrDigit>
因此,最好不要使用默认包:
Export-Package: org.acme.foo.bar
在 OSGi 规范 (V6) 中找不到它。
尝试了 Eclipse (Oygen.2) 中的示例。创建了两个插件(也称为捆绑包),一个 "provider",另一个 "consumer"。
提供商导出默认包,并且在该包中包含 public Class A.
=> 无法从插件 "provider" 访问 A。 Eclipse 建议导出包 ''
。调用该选项不会改变任何东西。编译错误依然存在。
我建议不要使用它。
想象一个带有包 org.acme.foo.bar
.
可以导出“.”例如请参阅以下 MANIFEST.MF 片段:
Export-Package: .,
org.acme.foo.bar
编译器对此没有任何问题,因此它似乎是一个合法的出口。
它有什么作用?跟下面的(“.”不导出)有什么区别?
Export-Package: org.acme.foo.bar
尽管 Eclipse MANIFEST.MF 验证允许“.”根据 OSGi 规范,它是无效的。这似乎是默认包的意思,但这不是导出的明智之举。
这似乎已被 Eclipse 错误 366800 证实,该错误报告使用了“.”。在 'org.eclipse.datatools.sqltools.parsers.sql.query' 插件中就像这样。该错误被接受为错误和“。”删除。
.
是 默认包 但根据 OSGi Core, Release 6 specification .
不是 Export-Package
因为包名必须以字母开头:
Export-Package ::= export ( ',' export)*
export ::= package-names ( ';' parameter )*
package-names ::= package-name ( ';' package-name )*
package-name ::= unique-name
unique-name ::= identifier ( '.' identifier )*
identifier ::= jletter jletterordigit *
jletter ::= <see Java Language Specification Third Edition for JavaLetter>
jletterordigit ::= <see Java Language Specification Third Edition for JavaLetterOrDigit>
因此,最好不要使用默认包:
Export-Package: org.acme.foo.bar
在 OSGi 规范 (V6) 中找不到它。
尝试了 Eclipse (Oygen.2) 中的示例。创建了两个插件(也称为捆绑包),一个 "provider",另一个 "consumer"。 提供商导出默认包,并且在该包中包含 public Class A.
=> 无法从插件 "provider" 访问 A。 Eclipse 建议导出包 ''
。调用该选项不会改变任何东西。编译错误依然存在。
我建议不要使用它。