我正在尝试使用Kafka:
import java.util.Properties;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
public class SimpleProducer {
public static void main(String[] args) {
Properties props = new Properties();
Producer<String, String> producer = new KafkaProducer<String, String>(props);
}
}
但得到以下错误:
java.lang.NoClassDefFoundError: org/apache/kafka/clients/producer/Producer
build.gradle:
...
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
compile group: 'org.apache.kafka', name: 'kafka-clients', version: '2.2.0'
}
...
发布于 2019-06-08 00:49:44
我跑了一下:
java -jar TestProejct-1.0-SNAPSHOT.jar -cp "D:\Software\kafka_2.12-2.2.0\libs\kafka-clients-2.2.0.jar"
有几个问题:
这就解决了这个问题:
java -cp "D:\Software\kafka_2.12-2.2.0\libs\*;TestProejct-1.0-SNAPSHOT.jar" SimpleProducer
发布于 2019-05-31 03:21:19
我在gradle中尝试了以下依赖项。
compile group: 'org.apache.kafka', name: 'kafka-clients', version: '2.1.0'
import java.util.Properties;
import org.apache.kafka.clients.producer.Callback;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.clients.producer.RecordMetadata;
public class Producer {
public static void main(String[] args){
Properties properties = new Properties();
properties.put("bootstrap.servers", "192.168.119.139:9092");
properties.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
properties.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
KafkaProducer kafkaProducer = new KafkaProducer(properties);
TestCallback callback = new TestCallback();
try{
for(int i = 0; i < 100; i++){
System.out.println("----->"+i);
kafkaProducer.send(new ProducerRecord("test", Integer.toString(i), "test message - " + i ));
}
}catch (Exception e){
e.printStackTrace();
}finally {
kafkaProducer.close();
}
}
private static class TestCallback implements Callback {
@Override
public void onCompletion(RecordMetadata recordMetadata, Exception e) {
if (e != null) {
System.out.println("Error while producing message to topic :" + recordMetadata);
e.printStackTrace();
} else {
String message = String.format("sent message to topic:%s partition:%s offset:%s", recordMetadata.topic(), recordMetadata.partition(), recordMetadata.offset());
System.out.println(message);
}
}
}
}
我已经使用Eclipse IDE测试了这段代码。还要记住,apache kafka客户端还会下载以下依赖项。
如果您希望使用命令运行,则必须使用一组jar文件指定-classpath来运行。下面我提供一个例子。
java.exe -Dfile.encoding=UTF-8 -classpath somelocation/a.jar;somelocation/b.jar;somelocation/c.jar
如果它仍然不能解决您的问题,请提供应用程序结构,发布代码详细信息,以便其他人可以帮助您。
https://stackoverflow.com/questions/56384388
复制相似问题