1

我注意到我有一个片段使用了一个Export-Package用于贡献给它的主机的包的指令:

Fragment-Host: org.eclipse.jetty.osgi.boot
Export-Package: org.eclipse.jetty.osgi.boot.utils;version="1.0.1.felix"
-buildpath: osgi.core;version=4.3.0,\
    org.eclipse.jetty.osgi.boot;version=7.6.1.v20120215
-sources: false
Import-Package: !org.eclipse.jetty.osgi.boot.utils.internal,\
    *

此捆绑包为主机中的 org.eclipse.jetty.osgi.boot.utils 包提供了一些额外的类。

理想情况下,我认为我应该尽可能保持包的私密性,但是这种情况呢?我的其余代码都不需要org.eclipse.jetty.osgi.boot.utils.

4

1 回答 1

2

从 OSGi 核心规范(6.0):

在片段的类路径之前搜索主机包的类路径。

“这个包提供了一个新的 org.eclipse.jetty.osgi.boot.utils 类覆盖主机的类”

片段包不能覆盖主机包的类(如果那是你的意思)。

如果一个包不打算被其他包使用,它不应该被导出。主机包可以看到其附加的片段包的类和资源,但前提是它没有相同的类或资源。

于 2014-09-04T19:00:45.263 回答