2016-05-10 15 views
0

Ich versuche in Karaf 4.0.3 einen Kafka Producer zu erstellen.Kafka OSGI-Bundle - Initialisierungsproblem beim Hersteller konnte die Klasse nicht initialisieren org.apache.kafka.clients.producer.ProducerConfig

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(); 

Mein pom.xml enthält,

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

Während den Code bereitstellen, ich bin die folgenden Fehler bekommen,

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 

ich Abhilfe in dem unten stehenden Link versucht haben, als auch,

Karaf - Kafka OSGI bundle - Producer issue

Aber immer noch den gleichen Fehler.

Antwort

-1

Ich kenne es eine 3 Monate alte Frage. Auch ich bin mit diesem Produzentenproblem festgefahren. Nachdem ich 2 Tage gegraben hatte, stolperte ich über ein Jira-Problem, wo jemand dieses Problem bereits erwähnte und die Lösung wurde gepatcht, wird aber in der Version 2.18.0 der Kamel-Bibliothek verfügbar sein. Um dieses Problem zu lösen, habe ich jedoch geklont this camel repository und baue die Komponenten, die ich für mein Projekt wollte. Diese Komponenten sind zu diesem Zeitpunkt bei 2.18.0-SNAPSHOT-Version. Wählen Sie unter dem Komponentenordner die gewünschten Komponenten aus und führen Sie maven clean package aus, um das im Zielverzeichnis generierte jar zu erhalten.

Eine zusätzliche Sache, wenn Sie camel-core sub project kompilieren. Es führt eine Menge von Testfällen aus, die Sie möglicherweise nicht benötigen, also ersetzen Sie einfach "" durch "org/apache/camel/**/*. Java" in der letzten Zeile der Eigenschaften. Hoffe, das hilft.