bndtools 激活包

Posted

技术标签:

【中文标题】bndtools 激活包【英文标题】:bndtools Activator bundle 【发布时间】:2012-11-25 20:06:47 【问题描述】:

如何在 bndtools 中使用 Activator 创建一个简单的捆绑包? 它一直在说:

The JAR is empty: The instructions for the JAR named com.myproj did not cause any content to be included, this is likely wrong  bnd.bnd /com.myproj Unknown Bndtools Problem Marker
Unused Private-Package instructions, no such package(s) on the class path: [com.myproj] bnd.bnd /com.myproj Unknown Bndtools Problem Marker

我在Eclipse中创建这个项目的方式是:

    创建新的“Bndtools OSGi 项目” 右键,配置 - 转换为 Maven 项目 在包com.myproj中创建Activator.java。 将com.myproj 添加到私有包中 将激活器设置为com.Activator

这是我的 bnd 文件:

Bundle-Activator: com.myproj.Activator
Private-Package: com.myproj

我生成的 jar 是空的。有什么建议吗?

P.S.:这是我的 eclipse 项目(导出为 zip-archive),以防它对事情有所启发:https://dl.dropbox.com/u/9162958/scraper.zip

【问题讨论】:

你是用maven还是通过eclipse创建jar? 在您导出时,您的类(包括激活器)似乎没有包含在您的包中。打开你的清单编辑器点击构建打开 build.properties 文件并粘贴该内容。 例如,这是我的其中一个包 build.properties 中的内容 你的看起来相似吗? output.. = bin/ bin.includes = META-INF/,\ .,\ plugin.xml,\ schema/,\ OSGI-INF/ source.. = src/ 你能成功构建一个捆绑锻炼bndtools吗?你在使用 maven Tycho 插件吗? @DuncanKrebs 你指的是哪个清单?我的项目没有。另外,我也没有build.properties 文件。 @mbelow 我没有使用第谷。我正在使用 bndtools 构建它 - 我的意思是 it 会自动为我构建它并将其放入 generated 文件夹中。 【参考方案1】:

我的猜测是“转换为 Maven 项目”是个麻烦。这可能已将项目的 Eclipse 类路径从 bnd 默认 bin 文件夹更改为“target/classes”。您能否确认它可以在不转换为 maven 的情况下工作?

bnd 可以与其他地方的 bin 文件夹一起使用,你必须设置$bin 属性(最好在cnf/build.bnd 中)。有一些关于如何在 maven 中使用 bndtools 的文章。此处 bnd 不遵循 Eclipse 设置的原因是它们在没有 Eclipse 的情况下不可用,并且 bnd 的设计目标是它可以在任何地方构建:因此 bnd 文件必须是信息的最终仲裁者。

无论如何,还有一个提示......激活器不是构建 OSGi 构建的正确方法,因为它们是一个邪恶的单例。声明式服务要优越得多,我们在设计 OSGi 时实际上应该使用类似的机制。

【讨论】:

【参考方案2】:

我的设置:

Eclipse Luna 4.4.0 (20140612-0600) Bndtools 2.3.0.REL-20140510-023245

这是我的工作方式:

    我下载了你导出的scraper.zip。 在 Eclipse 中创建并工作区。 已将您的项目从 ZIP 存档导入到空工作区。 默认的cnf项目是自动创建的。 默认情况下,bnd 配置为使用 bin 目录来编译 *.class 文件,而您的 Eclipse 项目配置为使用 target/classes。因此,我必须通过添加一行来更改 cnf/build.bnd 中的此设置:
########################
## BND BUILD SETTINGS ##
########################
bin: target/classes
    现在,在清理和重建项目之后,bnd 会创建包含您的 Activator.classgenerated/scraper.jar

注意事项:

您还可以调整项目配置以使用 bin 目录而不是 target/classes,但我假设您稍后会使用 Maven。 使用 bndtools 时,有时从空工作区开始并逐个导入项目会有所帮助。 bndtools 2.4 中存在一个错误,如果每个项目有多个源目录,则会导致一些问题。因此,我仍在使用 2.3 版

【讨论】:

以上是关于bndtools 激活包的主要内容,如果未能解决你的问题,请参考以下文章

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

BndTools,如何添加非 OSGi JAR?使用普通 JAR 会破坏整个项目。缺少要求接线包

office2019安装包和激活教程?

MyEclipse 10.7.1安装与激活全过程

激活失败啥原因?

myeclipse2017激活失败,请问怎么处理