如何使用eclipse和bndtools将jar转换为OSGi包

Jol*_*oly 11 java eclipse osgi bnd

我正在寻找一个循序渐进的指南,使用eclipse bndtools插件将jar转换为OSGi包.我知道可以使用命令行使用bnd来完成它,但很高兴知道如何通过IDE执行相同的操作.

我可能会遗漏一些东西,但本教程仅解释了如何从头开始创建项目.

Kul*_*ain 24

按照文章从标准jar创建Eclipse插件(OSGi包)来实现这一目标.虽然这种方法不使用Bnd,但你可以实现你想要的.

总之,您可以执行以下操作:

  1. 通过选择创建一个新的插件项目 File-> New -> Project...-> Plug-in Development -> "Plug-in from Existing JAR Archives"

  2. 在这个新插件(包)中选择您想要的罐子.输入其他插件数据(名称,版本,ID等).

  3. 取消选中该标志Unzip the JAR archive into the project.然后按完成.

取消选中该复选框Unzip the JAR archive into the project,可防止从Jar中提取通常不必要的类文件.

编辑: 导出捆绑包以将其安装到OSGi运行时.选择您的包并选择File -> Export -> Plug-in Development -> "Deployable plug-ins and fragment".

取消选中导出来源复选框.

  • 请记住,因为此方法不使用Bnd,所以您必须手动为要包装的包添加Import-Package语句.在你这样做之前,捆绑包可能会在运行时使用NoClassDefFoundErrors等崩溃.Bndtools确实具有相同的功能,并且还具有通过bnd生成依赖关系的优势......遗憾的是我还没有解决这个问题. (4认同)
  • @KuldeepJain我已经在上面做了解释.另外:你的答案实际上没有回答问题. (4认同)

Pet*_*ens 10

  1. 只需在bndtools中为要转换的所有(或相关)jar创建一个新项目.
  2. 为此项目指定一个名称,该名称将是转换后的jar的包符号名称的前缀.例如,如果您的公司是极致,请致电项目'com.acme'
  3. 在jar目录中下载jar和sources
  4. 使用-classpath条目(File/New/Bundle Descriptor)创建新的包描述符,例如:

-classpath: jar/htmlcleaner-2.2.jar, jar/htmlcleaner-2.2-src.zip

Export-Package: org.htmlcleaner.*;version=1.0

Import-Package: org.apache.tools.ant;resolution:=optional,\

org.jdom;resolution:=optional,\

*

Bundle-Version: 2.2.1

保存此文件后,查看生成的目录,瞧,有你的捆绑!您可以为要包装的任意数量的包重用相同的项目.

然后,您可以将捆绑包发布到其中一个存储库.选择bnd.bnd文件,然后使用上下文菜单选择Release Bundle.


编辑:NB 您不能直接使用来自其他项目的'wrap'项目,因为Eclipse需要源树才能工作.有两种解决方法:

  • 将捆绑的包装放在存储​​库中并从那里使用它(如上所述)
  • 解压缩项目的src文件夹中的源代码树

https://github.com/bndtools/bndtools/wiki/How-to-Wrap-Bundles