需要为 Apache karaf 2.2.8 工作的 Apache POI 3.8 osgi 包

Posted

技术标签:

【中文标题】需要为 Apache karaf 2.2.8 工作的 Apache POI 3.8 osgi 包【英文标题】:need working Apache POI 3.8 osgi bundle for Apache karaf 2.2.8 【发布时间】:2012-11-02 18:57:46 【问题描述】:

我正在使用 Karaf 2.2.8,在我的代码中,我正在使用 apache poi 读取和 excel 文件

try

Workbook wb=WorkbookFactory.create(inp);


应用程序在使用 poi-ooxml-3.8.jar 的 tomcat 6 和 tomcat 7 中运行良好

在 karaf 2.2.8 中:-

***当使用 servicemix 捆绑包时给了我

ClassNotFoundException: org.apache.poi.ss.usermodel.WorkbookFactory not found by org.apache.servicemix.bundles.poi

***使用 apache poi 时

Unable to resolve 266.0: missing requirement [266.0] package; (package=org.apache.poi))

用于安装 servicemix poi 的命令:-

install -s mvn:avalon-framework/avalon-framework/4.1.3;
install -s mvn:junit/junit/3.8.2;
install -s mvn:commons-codec/commons-codec/1.5;
install -s mvn:commons-logging/commons-logging/1.1;
install -s mvn:javax.servlet/servlet-api/2.3;
install -s mvn:log4j/log4j/1.2.13;
install -s mvn:logkit/LogKit/1.2;
install -s mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.poi/3.8_1;

用于安装 apache poi 的命令:-

install -s mvn:org.apache.poi/poi-ooxml/3.8;
install -s mvn:org.apache.poi/poi-ooxml-schemas/3.8;
install -s mvn:org.apache.poi/poi/3.8;
install -s mvn:commons-codec/commons-codec/1.5;
install -s mvn:dom4j/dom4j/1.6.1;
install -s mvn:stax/stax-api/1.0.1;
install -s mvn:org.apache.xmlbeans/xmlbeans/2.3.0;

请帮忙

【问题讨论】:

我想通了。我不必将 apache poi 作为 osgi 包。我将它添加到 karaf 内的“Lib”目录并导出所需的包,如下所示:- karaf.home/etc/custom.properties karaf.systemBundlesStartLevel=50 ... com.sun.jndi.ldap; \ oracle.jdbc; \org.apache.poi.ss.usermodel; \org.apache.poi;现在效果很好 您可能应该将其发布为答案而不是评论,以便其他人看到您的帖子更容易发现修复是什么 我不建议将这些类型的 jar 放入 lib 文件夹中。对您而言,将这些 jar 放入您的应用程序包中可能更容易。 是的 Achim 你是对的,我应该将它添加为一个包......但是 karaf 没有正确公开 jar 的包,并且 apache poi 的 sevicemix 和 springsource 的捆绑版本是旧的并且不支持 docx & xlsx 他的意思是你应该将 jar 嵌入到你的包中。 【参考方案1】:

我想通了。我不必将 apache poi 作为 osgi 包。 我将它添加到 karaf 内的“Lib”目录并导出

所需的包如下:-

karaf.home/etc/custom.properties 
karaf.systemBundlesStartLevel=50 
... 
com.sun.jndi.ldap; \ 
oracle.jdbc; \ 
org.apache.poi.ss.usermodel; \ 
org.apache.poi; 

现在效果很好

【讨论】:

您的解决方案似乎对我不起作用。请在下面找到错误:执行命令时出错:无法启动捆绑 mvn:在功能中:捆绑 [306] 中未解决的约束:无法解决 306.0:缺少要求 [306.0] osgi.wiring.package; (osgi.wiring.package=org.apache.poi.xssf.usermodel)

以上是关于需要为 Apache karaf 2.2.8 工作的 Apache POI 3.8 osgi 包的主要内容,如果未能解决你的问题,请参考以下文章

OSGi:Apache Felix 和 Apache Karaf 有啥区别?

Apache Karaf配置远程调试

Apache Karaf 与 Servicemix

OSGi:无法在 Apache Karaf 中找到 UserAdmin

Karaf-组装和特点:新旧方法?

OSGi 容器 - Equinox 与 Apache Karaf 中的 Apache Felix