带有 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 通过 Scala 创建 OSGi 包?