【问题标题】:Apache Commons FileUpload OSGi bundleApache Commons FileUpload OSGi 包
【发布时间】:2013-08-22 02:47:03
【问题描述】:

我在 Karaf 中安装我的包时遇到了这个错误,我是 OSGi 和 Karaf 的新手,所以我可以在解释错误时使用一些帮助。

Error executing command: Could not start bundle mvn:com.myexample/foobar/0.1.0.SNAPSHOT 
in feature(s) com.myexample.foobar-0.6.0.SNAPSHOT: Unresolved constraint in bundle 
com.myexample.foobar [102]: Unable to resolve 102.0: missing requirement [102.0] 
osgi.wiring.package; (&(osgi.wiring.package=org.apache.commons.fileupload)
(version>=1.3.0)(!(version>=2.0.0)))

这是我的feature.xml

    <bundle>mvn:commons-fileupload/commons-fileupload/1.3</bundle>

在我的 POM 中

  <dependency>
     <groupId>commons-fileupload</groupId>
     <artifactId>commons-fileupload</artifactId>
     <version>1.3</version>
  </dependency>

Maven 存储库显示 1.3 的最新版本,但如果有,它可能不是 OSGi 版本,有人知道我在哪里可以找到它吗?我也试过wrap:mvn,但也没有用。

【问题讨论】:

    标签: file-upload osgi apache-felix apache-karaf osgi-bundle


    【解决方案1】:

    1.3 有一个 OSGi 清单,应该作为一个包工作:

    $ bnd print -i http://repo1.maven.org/maven2/commons-fileupload/commons-fileupload/1.3/commons-fileupload-1.3.jar
    [IMPEXP]
    Import-Package
      javax.servlet                          
      javax.servlet.http                     
      org.apache.commons.io                  
      org.apache.commons.io.output           
    
    Export-Package
      org.apache.commons.fileupload          {version=1.3}
      org.apache.commons.fileupload.disk     {version=1.3}
      org.apache.commons.fileupload.portlet  {version=1.3}
      org.apache.commons.fileupload.servlet  {version=1.3}
      org.apache.commons.fileupload.util     {version=1.3}
    

    【讨论】:

    • 我也是这么想的,知道为什么它不适合我吗?错误的确切含义是什么?
    • 我不知道 Karaf 的功能是如何工作的,但听起来它没有安装捆绑包......您需要查看已安装捆绑包的集合及其状态。也许这个包没有解决,因为它错过了 commons io?
    • Karaf 的功能非常简单,它基本上是一个捆绑包列表,可以一次性安装以便于部署。回到问题,commons-fileupload 是否也满足所有依赖项(commons-io 是否安装了此功能?)
    • 谢谢大家,就是这样,我安装了 commons-io 2.4,顺便说一句,Apache commons io 与 commons io 有什么区别?
    • jpm4j.org/#!/search?q=p:org.apache.commons.io%20a:commons-io 与人们对约定的期望相反,commons-io:commons-io 是更新的。