【问题标题】:How can I avoid having bnd create Private-Package entries from Bundle-ClassPath?如何避免让 bnd 从 Bundle-ClassPath 创建 Private-Package 条目?
【发布时间】:2015-01-18 21:22:24
【问题描述】:

我正在尝试创建一个包含 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-Classpath 中有大约 20 个条目)最后一行是问题所在。 Include-Resource 条目会将包装好的 jar 及其所有依赖项吸进包中,效果很好。但是,将所有 jar 添加到 Bundle-ClassPath 会导致 bnd 将它们添加到 Private-Package。通常我不会在意,除非包含的 jar 中有这么多包,以至于 bnd 文件变得巨大,并且 bndtools 试图创建它时崩溃了。

我尝试手动创建 Private-Package 并将其放入 bnd 文件,但 bnd 只是覆盖它。

【问题讨论】:

标签: java osgi bnd bndtools


【解决方案1】:

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

-removeheaders: Private-Package

到你的 bnd 文件。

【讨论】:

  • 我并不担心,但 bndtools 失败并出现内部错误:“更新导出的包:ca.privacyanalytics.anonymization.gate”。可能在创建它时超出了 GC 开销限制。 bnd 命令行工具没有,所以这看起来像一个 bndtools 错误
  • 在 github 上记录了 bndtools 的错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-27
  • 1970-01-01
相关资源
最近更新 更多