如何在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中创建这个项目的方式是:
Activator.java
中创建com.myproj
。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
答案 0 :(得分:3)
我的猜测是“转换为Maven项目”是麻烦。这可能已将项目的Eclipse类路径从bnd default bin文件夹更改为“target / classes”。你可以确认它没有转换成maven吗?
bnd可以与bin文件夹的其他位置一起使用,您必须设置${bin}
属性(最好在cnf/build.bnd
中)。有一些文章如何使用mand的bndtools。 bnd不遵循Eclipse设置的原因是它们在没有Eclipse的情况下不可用,而bnd的设计目标是它在任何地方构建:因此bnd文件必须是信息的最终仲裁者。
无论如何,还有一个提示......激活器不是构建OSGi构建的正确方法,因为它们是一个邪恶的单例。声明性服务要优越得多,我们在设计OSGi时实际上应该使用类似的机制。
答案 1 :(得分:1)
scraper.zip
。cnf
项目。bnd
配置为在Eclipse项目配置为使用bin
时将*.class
目录用于已编译的target/classes
文件。因此,我必须通过添加一行来更改cnf/build.bnd
中的此设置:########################
## BND BUILD SETTINGS ##
########################
bin: target/classes
bnd
会创建包含generated/scraper.jar
的{{1}}。Activator.class
目录而不是bin
,但我假设您稍后将使用Maven。target/classes
时,当您从一个空工作区开始并逐个导入项目时,它有时会有所帮助。