Wie verwende ich Apache POI in OSGi?

Ich möchte Apache-POI in OSGi verwenden, um eine Excel-Arbeitsmappe mit der Streaming-OOXML-API (SXSSF) zu schreiben. Die Streaming-API ist ab POI 3.9 verfügbar.

Wie die neuesten Apache POI 3.11-Gläser keine Bundles sind: Was ist der beste Weg, um POI in OSGi zum Laufen zu bringen?

ch habe zwei Ansätze ausprobier

embed die Gläser direkt im einzigen Bundle, das sie verwenden wird POI-Gläser als Bündel vorverpackt verwenden

Ich bin verzweifelt daran, alle Abhängigkeiten zusammenzubringen.

Zuerst über das Einbetten des POI-Glases in mein Bundle: Meine bndtools-Datei enthält

-buildpath:  \
...
libs/dom4j-1.6.1.jar;version=file,\
libs/poi-3.11.jar;version=file,\
libs/poi-ooxml-3.11.jar;version=file,\
libs/poi-ooxml-schemas-3.11.jar;version=file

Private-Package:  \
...
org.openxmlformats.schemas.*,\
org.apache.poi.*,\
org.dom4j.*,\
com.microsoft.schemas.office.x2006.*,\
schemaorg_apache_xmlbeans.*,\
schemasMicrosoftComOfficeExcel.*,\
schemasMicrosoftComOfficeOffice.*,\
schemasMicrosoftComVml.*

Dies ergibt ein Bündel, das viele, viele Dinge importiert, wie zum Beispielorg.bouncycastle.asn1.x509 undorg.junit. Ich habe nicht vor, meine Anwendung zu verschlüsseln oder zu testen - daher sind diese beiden Optionen wahrscheinlich "optional". Wie kann ich das spezifizieren? Gibt es eine gute Möglichkeit, all diese Abhängigkeiten zu sammeln?

Hinweis: mindestensorg.apache.commons.codec undcom.sun.msv.datatype.xsd.lib werden zusätzlich benötigt, sind aber bereits Bundles.

it vorverpackten Gläsern habe ich versucht,org.apache.servicemix.bundles.poi 3.9_2. Dies erfordert auchdom4j so habe ich die vorgewickeltenorg.apache.servicemix.bundles.dom4j aber dafür ist mindestens Version 1.0 von @ erforderlijavax.xml.stream was mein JVM / Felix OSGi als "nur" Version ankündigt0.0.0.1_007_JavaSE. Ich habe das von Hand behoben (hässlich), bin dann aber auf eine andere Abhängigkeit angewiesen.

Was ist der gute Weg?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage