【问题标题】:OSGI kafka client bundle causes a framework exception due to missing constraintOSGI kafka 客户端包由于缺少约束而导致框架异常
【发布时间】:2017-11-09 06:45:24
【问题描述】:

主题 : 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,

我无法解决这个问题。

非常感谢任何帮助。请发送电子邮件是否需要更多信息。

【问题讨论】:

    标签: java maven apache-kafka osgi


    【解决方案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 中找到一些提示。

    【讨论】:

    • 嗨。好的,我将不得不看看如何部署捆绑包。我会调查的。感谢您的帮助。
    • 用一个链接更新了我的答案,如果您将 Apache Karaf 用作 OSGi 容器,该链接可能会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2023-02-05
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多