我注意到我的一个片段使用 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,\
*
此 bundle 向主机中的 org.eclipse.jetty.osgi.boot.utils 包贡献了一些额外的类。
理想情况下,我认为我应该尽可能保持包的私密性,但这种情况又如何呢?我的其余代码都不需要 org.eclipse.jetty.osgi.boot.utils
.
最佳答案
来自 OSGi 核心规范 (6.0):
A host bundle's class path is searched before a fragment's class path.
“此 bundle 提供了一个新的 org.eclipse.jetty.osgi.boot.utils,其类覆盖了主机的类”
片段 bundle 无法覆盖主机 bundle 的类(如果这就是您的意思)。
如果一个包不打算被其他包使用,则不应导出它。主机包可以看到其附加的片段包的类和资源,但前提是它没有相同的类或资源。
关于java - OSGi 片段是否应该导出为其主机贡献的包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25670577/