Java 如何避免bnd从Bundle类路径创建私有包条目?

Java 如何避免bnd从Bundle类路径创建私有包条目?,java,osgi,bnd,bndtools,Java,Osgi,Bnd,Bndtools,我正试图创建一个包来包装一个jar及其所有依赖项(大约20个其他jar),并公开我自己设计的接口。我不想为所有依赖项创建捆绑包,因为我想创建一个包含整个混乱的“密封组件” 显示问题的示例bnd文件如下所示 Bundle-Version: 0.0.0.${tstamp} Export-Package: \ pub Include-Resource: lib=lib/ Bundle-ClassPath: .,lib/ant-1.9.3.jar (这只是一个示例……在现实世界中,Bundl

我正试图创建一个包来包装一个jar及其所有依赖项(大约20个其他jar),并公开我自己设计的接口。我不想为所有依赖项创建捆绑包,因为我想创建一个包含整个混乱的“密封组件”

显示问题的示例bnd文件如下所示

Bundle-Version: 0.0.0.${tstamp}
Export-Package:  \
    pub
Include-Resource: lib=lib/
Bundle-ClassPath: .,lib/ant-1.9.3.jar
(这只是一个示例……在现实世界中,Bundle类路径中大约有20个条目)最后一行是问题所在。Include资源条目将把包装好的jar及其所有依赖项吸进包中,这非常有效。然而,将所有JAR添加到Bundle类路径会导致bnd将它们添加到私有包中。通常情况下,我不会在意,只是在包含的jar中有太多的包,以致于bnd文件变得巨大,而bndtools在尝试创建它时崩溃了


我曾尝试手动创建私有包并将其放入bnd文件中,但bnd只是将其覆盖。

我不知道您为什么担心
私有包
。它对OSGi框架没有任何意义。这只是一件小事。如果您不想在清单中看到它,只需添加

-removeheaders: Private-Package

到您的bnd文件。

我不担心,但bndtools失败,在“更新导出的包:ca.privacyanalytics.anonymization.gate”过程中出现内部错误。创建GC时,可能超出了GC开销限制。bnd命令行工具没有,因此这看起来像是在github上记录的bndtools bug,用于bndToolsCompletementary