需要为 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 有啥区别?