Java 让Apache httpcomponents HttpClient 4.3.x OSGi捆绑包在ApacheKaraf 2.3.x上工作时出现问题

Java 让Apache httpcomponents HttpClient 4.3.x OSGi捆绑包在ApacheKaraf 2.3.x上工作时出现问题,java,osgi,apache-karaf,apache-httpcomponents,karaf,Java,Osgi,Apache Karaf,Apache Httpcomponents,Karaf,尝试在apache Karaf osgi容器中安装httpclient osgi 4.3.2捆绑包(org.apache.httpcomponents:httpclient osgi:bundle:4.3.2,如上所述)时,我收到以下错误报告: karaf@root> install mvn:org.apache.httpcomponents/httpclient-osgi/4.3.2 Bundle ID: 60 karaf@root> start 60 Error executin

尝试在apache Karaf osgi容器中安装httpclient osgi 4.3.2捆绑包(org.apache.httpcomponents:httpclient osgi:bundle:4.3.2,如上所述)时,我收到以下错误报告:

karaf@root> install mvn:org.apache.httpcomponents/httpclient-osgi/4.3.2
Bundle ID: 60
karaf@root> start 60
Error executing command: Error starting bundles:
    Unable to start bundle 60: Unresolved constraint in bundle 
    org.apache.httpcomponents.httpclient [60]: Unable to resolve 60.0: 
    missing requirement [60.0] osgi.wiring.package; 
    (&(osgi.wiring.package=org.apache.http.concurrent)(version>=4.3.0)
    (!(version>=4.4.0)))
在检查标头时,它尝试加载的依赖项似乎被标记为私有包,类可以在bundle JAR中找到:

karaf@root> headers 60
=>

同时,org.apache.http*也被定义为导入包

...
Import-Package = 
    javax.crypto,
    javax.crypto.spec,
    javax.net,
    javax.net.ssl,
    javax.security.auth.x500,
    org.ietf.jgss,
    org.osgi.framework;version="[1.5,2)",
    org.osgi.service.cm;version="[1.3,2)",
    org.apache.commons.logging;version="[1.1.0,1.2.0)",
    net.sf.ehcache;resolution:=optional,
    net.spy.memcached;resolution:=optional,
    org.apache.http.concurrent;version="[4.3.0,4.4.0)",
    org.apache.http.message;version="[4.3.0,4.4.0)",
    org.apache.http.impl.entity;version="[4.3.0,4.4.0)",
    org.apache.http.entity;version="[4.3.0,4.4.0)",
    org.apache.http.protocol;version="[4.3.0,4.4.0)",
    org.apache.http.impl.pool;version="[4.3.0,4.4.0)",
    org.apache.http;version="[4.3.0,4.4.0)",
    org.apache.http.params;version="[4.3.0,4.4.0)",
    org.apache.http.util;version="[4.3.0,4.4.0)",
    org.apache.http.io;version="[4.3.0,4.4.0)",
    org.apache.http.impl.io;version="[4.3.0,4.4.0)",
    org.apache.http.config;version="[4.3.0,4.4.0)",
    org.apache.http.pool;version="[4.3.0,4.4.0)",
    org.apache.http.impl;version="[4.3.0,4.4.0)"
这似乎导致Karaf试图找到包的导出,但未能激活包

这个捆绑清单有什么问题吗?还是我遗漏了什么


PS:我尝试了较旧的4.3.x和Karaf 2.3.x版本-结果相同。

您需要HttpCore OSGi捆绑包和一个导出Commons日志API的捆绑包,以满足HttpClient OSGi捆绑包的必要依赖性。

这确实有效。HttpCore类包含在HttpClient OSGI jar中这一事实让我感到困惑。
...
Import-Package = 
    javax.crypto,
    javax.crypto.spec,
    javax.net,
    javax.net.ssl,
    javax.security.auth.x500,
    org.ietf.jgss,
    org.osgi.framework;version="[1.5,2)",
    org.osgi.service.cm;version="[1.3,2)",
    org.apache.commons.logging;version="[1.1.0,1.2.0)",
    net.sf.ehcache;resolution:=optional,
    net.spy.memcached;resolution:=optional,
    org.apache.http.concurrent;version="[4.3.0,4.4.0)",
    org.apache.http.message;version="[4.3.0,4.4.0)",
    org.apache.http.impl.entity;version="[4.3.0,4.4.0)",
    org.apache.http.entity;version="[4.3.0,4.4.0)",
    org.apache.http.protocol;version="[4.3.0,4.4.0)",
    org.apache.http.impl.pool;version="[4.3.0,4.4.0)",
    org.apache.http;version="[4.3.0,4.4.0)",
    org.apache.http.params;version="[4.3.0,4.4.0)",
    org.apache.http.util;version="[4.3.0,4.4.0)",
    org.apache.http.io;version="[4.3.0,4.4.0)",
    org.apache.http.impl.io;version="[4.3.0,4.4.0)",
    org.apache.http.config;version="[4.3.0,4.4.0)",
    org.apache.http.pool;version="[4.3.0,4.4.0)",
    org.apache.http.impl;version="[4.3.0,4.4.0)"