如何为Apache POI 3.8创建一个有效的OSGI包?

ali*_*opi 6 osgi apache-poi

我的目标是在Eclipse RCP环境中创建Excel 2007文档(XLSX)(Excel 2003很简单).我不想将POI jar放在/ lib文件夹中,而是想从目标定义中使用一个有效的POI OSGI包.

到目前为止,我所有的尝试都未能创建一个有效的 OSGI POI 3.8捆绑包.到目前为止我做了什么:

  • 我将所有相关的JAR文件与Ant zip任务合并:

    • POI-3.8-beta3-20110606.jar
    • POI-OOXML-3.8-beta3-20110606.jar
    • POI-OOXML-架构 - 3.8 beta3-20110606.jar
    • POI暂存器-3.8-beta3-20110606.jar
  • 我使用wrap参数运行了bnd工具:java -jar biz.aQute.bnd.jar wrap ./poi-3.8-beta3-20110606-merged.jar

  • 我必须使用bnd分别将/ ooxml-lib文件夹中的jar包捆绑在一起:

    • XMLBeans的-2.3.0.jar
    • STAX的API-1.0.1.jar
    • dom4j的-1.6.1.jar
  • 这导致ClassNotFoundExceptions org.w3c.dom.Node因为xmlbeans-2.3.0.jar从此包导出四个类org.w3c.dom.通常,JavaSE-RuntimeEnvironment会导出这些.

  • org/w3c/dom从xmlbeans-2.3.0.jar中删除了该文件夹并重新绑定了jar但我得到了其他ClassNotFoundExceptions.

这是我到目前为止的地方.我认为使用bnd wrap是不够的.可能我必须创建一个bnd.properties文件并具有显式的Export-Package/Import-Package语句但哪些有效?

那么,有没有人成功地创建了一个有效的POI 3.8 OSGI捆绑包?

ear*_*cam 5

如果你并不需要特定版本,只需使用http://ebr.springsource.com/repository/app/bundle/version/detail?name=com.springsource.org.apache.poi&version=3.0.2.FINAL那页面列出了它的依赖项等(如果你使用的是Maven/Ivy,你也可以下载或参考)

可能是http://engroup.sourceforge.net/maven2/engroup/osgi/commons/poi-osgi/3.1/http://ebr.springsource.com/repository/app/search?query=poi可以提供一些灵感(在第一个链接中有一个maven POM,它列出了bundle plugin部分中的(bnd)指令).

你为什么要合并罐子?为什么不尝试单独包装?

要尝试的第二件事是使用现有的OSGi罐子的xmlbeans,stax-apidom4j

您还可以使用"org.osgi.framework.system.packages"配置JRE(系统包)导出的内容 - 这样您就可以选择不导出 org.w3c.dom