Osgi bndtools激活程序包

Osgi bndtools激活程序包,osgi,bnd,bndtools,Osgi,Bnd,Bndtools,如何在bndtools中创建带有激活器的简单捆绑包? 它一直在说: 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,

如何在bndtools中创建带有激活器的简单捆绑包? 它一直在说:

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是空的。有什么建议吗

    附:这是我的eclipse项目(导出为zip存档),以防它对某些事情有所启示:

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

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

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

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

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

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

    My setup:
    • 月食月亮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
    创建
    generated/scraper.jar
    ,其中包含您的
    Activator.class
  • 笔记:
    • 您还可以调整项目配置以使用
      bin
      目录,而不是
      target/classes
      ,但我假设您稍后将使用Maven
    • 使用bndtools时,有时当您从一个空的工作区开始并逐个导入项目时,它会有所帮助
    • bndtools 2.4中有一个bug,如果每个项目有多个源目录,就会导致一些问题。因此,我仍然使用版本2.3
    我的设置:
    • 月食月亮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
    创建
    generated/scraper.jar
    ,其中包含您的
    Activator.class
  • 笔记:
    • 您还可以调整项目配置以使用
      bin
      目录,而不是
      target/classes
      ,但我假设您稍后将使用Maven
    • 使用bndtools时,有时当您从一个空的工作区开始并逐个导入项目时,它会有所帮助
    • bndtools 2.4中有一个bug,如果每个项目有多个源目录,就会导致一些问题。因此,我仍然使用版本2.3

    您是使用maven还是通过eclipse创建jar?在导出时,您的类(包括activator)似乎没有包含在包中。打开您的清单编辑器单击build打开build.properties文件并粘贴该内容。例如,这是我的一个build.properties包中的内容。您的内容看起来类似吗?输出..=bin/bin.includes=META-INF/,\,\plugin.xml、\schema/,\OSGI-INF/source..=src/您能否成功构建捆绑训练bndtools?你在使用maven Tycho插件吗?@DuncanKrebs你是说哪个清单?我的项目没有。而且,我也没有
    build.properties
    文件@姆贝洛,我没有用第谷。我正在使用bndtools
    ########################
    ## BND BUILD SETTINGS ##
    ########################
    bin: target/classes