由于缺少约束,OSGI kafka客户端包导致框架异常

时间:2017-11-09 06:45:24

标签: java maven apache-kafka osgi

主题:OSGI Kafka客户端捆绑包由于缺少约束而导致框架异常

我从Apache ServiceMix(https://mvnrepository.com/artifact/org.apache.servicemix.bundles/org.apache.servicemix.bundles.kafka-clients/0.11.0.1_1)下载了kafka-clients OSGI包(org.apache.servicemix.bundles.kafka- clients-0.11.0.1_1.jar)。

以下是我的pom.xml

<dependency>
    <groupId>org.apache.servicemix.bundles</groupId>
    <artifactId>org.apache.servicemix.bundles.kafka-clients</artifactId>
    <version>0.11.0.1_1</version>
</dependency>

我用它在使用OSGI构建的应用程序的sflow_collector模块中开发我的Kafka生成器代码。 一切都在编译,没有问题。

当我运行我的应用程序时,在加载sflow_collector模块期间出现以下错误。

org.osgi.framework.BundleException: The bundle "sflow-collector_1.0.0 [49]" could not be resolved. Reason: Missing Constraint: Import-Package: org.apache.kafka.clients.producer; version="[0.11.0,1.0.0)"

我检查了Kafka OSGI包的清单,它看起来很好。我在导出列表中看到了生产者(下面以粗体显示)。

Manifest-Version: 1.0
Bnd-LastModified: 1508749231115
Build-Jdk: 1.8.0_111
Built-By: jbonofre
Bundle-Description: This OSGi bundle wraps kafka-clients 0.11.0.1 jar file.
Bundle-DocURL: http://www.apache.org/
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
Bundle-ManifestVersion: 2
Bundle-Name: Apache ServiceMix :: Bundles :: kafka-clients
Bundle-SymbolicName: org.apache.servicemix.bundles.kafka-clients
Bundle-Vendor: The Apache Software Foundation
Bundle-Version: 0.11.0.1_1
Created-By: Apache Maven Bundle Plugin
Export-Package:
    org.apache.kafka.clients;version="0.11.0.1";uses:="org.apache.kafka.common,
    org.apache.kafka.common.config,
    org.apache.kafka.common.errors,
    org.apache.kafka.common.internals,
    org.apache.kafka.common.metrics,
    org.apache.kafka.common.network,
    org.apache.kafka.common.protocol,
    org.apache.kafka.common.requests,
    org.apache.kafka.common.utils",
    org.apache.kafka.clients.admin;version="0.11.0.1";
    uses:="org.apache.kafka.common,
    org.apache.kafka.common.acl,
    org.apache.kafka.common.annotation,
    org.apache.kafka.common.config,
    org.apache.kafka.common.errors",    
    org.apache.kafka.clients.consumer;version="0.11.0.1";
    uses:="org.apache.kafka.clients.coumer.internals,
    org.apache.kafka.common,
    org.apache.kafka.common.config,
    org.apache.kafka.common.errors,
    org.apache.kafka.common.header,
    org.apache.kafka.common.record,
    org.apache.kafka.common.serialization",
    org.apache.kafka.clients.consumer.internals;version="0.11.0.1";uses:="org.apache.kafka.clients,
    org.apache.kafka.clients.consumer,
    org.apache.kafka.common,
    org.apache.kafka.common.errors,
    org.apache.kafka.common.metrics,
    org.apache.kafka.common.protocol,
    org.apache.kafka.common.protocol.types,
    org.apache.kafka.common.requests,
    org.apache.kafka.common.serialization,
    org.apache.kafka.common.utils",
    org.apache.kafka.clients.producer;version="0.11.0.1";uses:="org.apache.kafka.clients.consumer,
    org.apache.kafka.common,
    org.apache.kafka.common.config,
    org.apache.kafka.common.errors,

我无法解决此问题。

任何帮助非常感谢。请发送电子邮件以获取更多信息。

1 个答案:

答案 0 :(得分:1)

正如您可能理解的那样,错误消息

  

缺少约束:Import-Package:org.apache.kafka.clients.producer;版本=“[0.11.0,1.0.0)

..表示捆绑包(可能是您的捆绑包)导入'clients.producer'包,而容器中没有捆绑包导出具有给定版本的包。该版本与您粘贴的kafka-clients捆绑清单相匹配,因此没有问题。我的猜测是kafka-clients软件包没有部署在容器中,你必须部署它和你自己的软件包。

您使用的是哪个容器?如果是Apache Karaf,您可能会在this github project中找到一些提示。