bndtools Activator bundle



如何在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中创建这个项目的方式是:

  1. 创建新的"Bndtools OSGi项目">
  2. 右键单击,配置-转换为Maven项目
  3. 在包com.myproj中创建Activator.java
  4. com.myproj添加到专用包
  5. 将激活器设置为com.Activator

这是我的bnd文件:

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

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

附言:这是我的eclipse项目(作为zip档案导出),以防它能揭示一些事情:https://dl.dropbox.com/u/9162958/scraper.zip

我的猜测是"转换为Maven项目"是问题所在。这可能已经将项目的Eclipse类路径从bnd默认bin文件夹更改为"target/classes"。你能确认它在不转换为maven的情况下工作吗?

bnd可以与bin文件夹的其他位置一起使用,您必须设置${bin}属性(最好在cnf/build.bnd中)。有一些关于如何将bndtools与maven一起使用的文章。bnd之所以不遵循Eclipse的设置,是因为没有Eclipse,它们就不可用,而bnd的设计目标是在任何地方构建:因此,bnd文件必须是信息的最终仲裁者。

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

我的设置:

  • Eclipse Luna 4.4.0(20140612-600)
  • Bndtools 2.3.0.REL-2014 0510-023245

以下是我如何使其工作的:

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

注意:

  • 您也可以调整您的项目配置以使用bin目录而不是target/classes,但我认为您稍后将使用Maven
  • 当使用bndtools时,当您从一个空的工作区开始并逐个导入项目时,它有时会有所帮助
  • bndtools 2.4中有一个错误,如果每个项目有多个源目录,就会导致一些问题。因此,我仍然使用2.3版本

相关内容

  • 没有找到相关文章

最新更新