带有 lombok 的 Bndtools“包含未知容器”

Posted

技术标签:

【中文标题】带有 lombok 的 Bndtools“包含未知容器”【英文标题】:Bndtools with lombok "contains an unknown container" 【发布时间】:2016-03-19 00:21:45 【问题描述】:

我终于完成了将我的应用程序的一部分移动到 osgi 包中并在我的主机应用程序中使用这些包。这真的很好用!

目前我正在使用 bndtools 清理我的 eclipse 工作区并消除警告。

我无法摆脱的一个警告是:

Eclipse: The .classpath contains an unknown container: org.eclipse.jdt.USER_LIBRARY/lombok

我在一些捆绑包中使用了 lombok。我只是将它添加到项目属性 > java 构建路径 > 库选项卡中。很好用,因为 lombok 是 Eclipse 中用于编译时间的库。但这里的问题是我确实收到了上述警告。

我向本地 bndtools 存储库(存储库视图)添加了一些外部 jars(带有捆绑信息),然后可以将 jars 添加到 bndtools 构建路径,例如 gson。

但 lombok 似乎没有任何 osgi 捆绑信息,因此将其添加到本地存储库会给我一个错误“Jar 没有符号名称”。

当然,我可以编辑 lombok.jar 并添加捆绑信息。但我想知道是否有更清洁的方法来做到这一点?

【问题讨论】:

【参考方案1】:

警告意味着,虽然由于 lombok 容器,Eclipse 知道要放在编译路径上的 jar,但离线构建(例如 gradle)现在无法知道要放在类路径上的 jar。因此,警告表明在 Eclipse 中构建和在 Eclipse 之外构建之间存在保真度问题。

将所有编译jar放在项目的bnd.bnd文件的-buildpath指令中意味着Eclipse和非Eclipse构建之间的保真度。

但是,您可以使用 bnd 文件中的 -fixupmessages 指令删除警告。

-fixupmessages: "Eclipse: The .classpath contains an unknown container: org.eclipse.jdt.USER_LIBRARY/lombok"

【讨论】:

感谢@BJ Hargrave 为整个工作区提供的没有警告! fixupmessages 配置选项成功了。

以上是关于带有 lombok 的 Bndtools“包含未知容器”的主要内容,如果未能解决你的问题,请参考以下文章

bndtools 激活包

如何替换 BndTools 默认启动器并更改导出文件结构

使用 Maven、OSGi 和 Bndtools

如何使用 bndtools 通过 Scala 创建 OSGi 包?

带有杰克逊 JsonProperty 的 Lombok 构建器模式

带有继承的@Data注释lombok上的警告等于/哈希码