我注意到我使用了一个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
。
答案 0 :(得分:2)
来自OSGi核心规范(6.0):
在片段的类路径之前搜索主机包的类路径。
"此捆绑包提供了一个新的org.eclipse.jetty.osgi.boot.utils,其中的类覆盖了主机的那些"
片段包不能覆盖主机包的类(如果这是你的意思)。
如果某个包不打算由其他包使用,则不应导出它。主机包可以看到其附加片段包的类和资源,但前提是它没有相同的类或资源。