主题: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,
我无法解决此问题。
任何帮助非常感谢。请发送电子邮件以获取更多信息。
答案 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中找到一些提示。