Пакет Kafka OSGI - проблема инициализации производителя не может инициализировать класс org.apache.kafka.clients.producer.ProducerConfig

Я пытаюсь создать Kafka Producer в karaf 4.0.3.

ClassLoader currentLoader; 
try{
    currentLoader = Thread.currentThread().getContextClassLoader();
    Thread.currentThread().setContextClassLoader(null);
    Properties props = new Properties();
    props.put("bootstrap.servers","localhost:9092");
    props.put("value.serializer","org.apache.kafka.common.serialization.StringSerializer");
    props.put("key.serializer","org.apache.kafka.common.serialization.IntegerSerializer");

    KafkaProducer<String,String> producer = new KafkaProducer<String,String>(props);
    Thread.currentThread().setContextClassLoader(currentLoader);
    producer.close();

Мой pom.xml содержит,

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>0.9.0.0</version>
</dependency>   

При развертывании кода я получаю следующую ошибку:

2016-05-09 14:18:12,127 | ERROR | nsole user karaf | ShellUtil                        | 44 - org.apache.karaf.shell.core - 4.0.3 | Exception caught while executing command
org.apache.karaf.shell.support.MultiException: Error executing command on bundles:
Error starting bundle143: Activator start error in bundle KafkaArtifact [143].
at org.apache.karaf.shell.support.MultiException.throwIf(MultiException.java:61)
at org.apache.karaf.bundle.command.BundlesCommand.doExecute(BundlesCommand.java:69)[24:org.apache.karaf.bundle.core:4.0.3]
at org.apache.karaf.bundle.command.BundlesCommand.execute(BundlesCommand.java:54)[24:org.apache.karaf.bundle.core:4.0.3]
at org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:83)[44:org.apache.karaf.shell.core:4.0.3]
at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:67)[44:org.apache.karaf.shell.core:4.0.3]
at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:87)[44:org.apache.karaf.shell.core:4.0.3]
at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:480)[44:org.apache.karaf.shell.core:4.0.3]
at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:406)[44:org.apache.karaf.shell.core:4.0.3]
at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)[44:org.apache.karaf.shell.core:4.0.3]
at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:182)[44:org.apache.karaf.shell.core:4.0.3]
at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:119)[44:org.apache.karaf.shell.core:4.0.3]
at org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:94)[44:org.apache.karaf.shell.core:4.0.3]
at org.apache.karaf.shell.impl.console.ConsoleSessionImpl.run(ConsoleSessionImpl.java:270)[44:org.apache.karaf.shell.core:4.0.3]
at java.lang.Thread.run(Thread.java:745)[:1.8.0_66]
Caused by: java.lang.Exception: Error starting bundle143: Activator start error in bundle KafkaArtifact [143].
at org.apache.karaf.bundle.command.BundlesCommand.doExecute(BundlesCommand.java:66)[24:org.apache.karaf.bundle.core:4.0.3]
... 12 more
Caused by: org.osgi.framework.BundleException: Activator start error in bundle KafkaArtifact [143].
at org.apache.felix.framework.Felix.activateBundle(Felix.java:2276)[org.apache.felix.framework-5.4.0.jar:]
at org.apache.felix.framework.Felix.startBundle(Felix.java:2144)[org.apache.felix.framework-5.4.0.jar:]
at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998)[org.apache.felix.framework-5.4.0.jar:]
at org.apache.karaf.bundle.command.Start.executeOnBundle(Start.java:38)[24:org.apache.karaf.bundle.core:4.0.3]
at org.apache.karaf.bundle.command.BundlesCommand.doExecute(BundlesCommand.java:64)[24:org.apache.karaf.bundle.core:4.0.3]
... 12 more
Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.kafka.clients.producer.ProducerConfig
at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:181)
at com.KafkaSample.KafkaArtifact.Producer.<init>(Producer.java:24)
at com.KafkaSample.KafkaArtifact.KafkaConsumerProducerDemo.start(KafkaConsumerProducerDemo.java:9)
at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:697)
at org.apache.felix.framework.Felix.activateBundle(Felix.java:2226)
... 16 more

Я также пробовал обходной путь по ссылке ниже,

Комплект Karaf - Kafka OSGI - Проблема производителя

Но все равно получаю ту же ошибку.


person Sanjeev    schedule 10.05.2016    source источник


Ответы (1)


Я знаю, что это вопрос трехмесячной давности. Даже я застрял с этой проблемой производителя. После копания в течение 2 дней я наткнулся на проблему jira, где кто-то уже упоминал об этой проблеме, и решение было исправлено, но будет доступно в версии 2.18.0 библиотеки верблюда. Однако, чтобы решить эту проблему, я клонировал этот репозиторий верблюдов и собрал компоненты, которые мне нужны для моего проекта. .В настоящее время эти компоненты находятся в версии 2.18.0-SNAPSHOT. В папке компонентов выберите нужные компоненты и запустите пакет maven clean, чтобы сгенерировать банку в целевом каталоге.

Еще одна вещь, когда вы компилируете подпроект Camel-core. Он выполняет множество тестовых случаев, которые вам могут не понадобиться, поэтому просто замените «» на «org/apache/camel/**/*.java» в последней строке свойств. Надеюсь это поможет.

person rohitranjan1991    schedule 05.08.2016