卡夫卡抛出 java.lang.NoSuchMethodException
Kafka throws java.lang.NoSuchMethodException
我已经编写了自己的序列化程序来将 java 对象发布到主题。我将 serializer.class 属性 设置为我的自定义序列化程序。
当 运行 制作人出现以下异常时。有人可以帮我吗?
异常
Exception in thread "main" java.lang.NoSuchMethodException: com.xxxx.CustomFileSerializer.<init>(kafka.utils.VerifiableProperties)
at java.lang.Class.getConstructor0(Class.java:3082)
at java.lang.Class.getConstructor(Class.java:1825)
at kafka.utils.CoreUtils$.createObject(CoreUtils.scala:222)
at kafka.producer.Producer.<init>(Producer.scala:62)
at kafka.javaapi.producer.Producer.<init>(Producer.scala:26)
at com.xx.KafkaProducer.generateMessgaes(KafkaProducer.java:50)
at com.xx.KafkaProducer.main(KafkaProducer.java:60)
我的制作人
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("serializer.class", "com.xxxx.CustomFileSerializer");
kafka.javaapi.producer.Producer<String, FileObj> producer = new kafka.javaapi.producer.Producer<String, FileObj>(
producerConfig);
String key = "key1";
KeyedMessage<String, RawFile> record = new KeyedMessage<String, RawFile>(topic, key, file);
producer.send(record);
producer.close();
看起来您正在使用带有新序列化器的旧制作器。旧的序列化程序在其构造函数中采用了 VerifiableProperties 值。尝试新的生产者或使用解码器的实现作为序列化器。
另请注意,序列化器 属性 的名称随新的生产者而改变,de/serializers 实现的接口(序列化器和反序列化器,而不是旧的解码器)
我已经编写了自己的序列化程序来将 java 对象发布到主题。我将 serializer.class 属性 设置为我的自定义序列化程序。 当 运行 制作人出现以下异常时。有人可以帮我吗?
异常
Exception in thread "main" java.lang.NoSuchMethodException: com.xxxx.CustomFileSerializer.<init>(kafka.utils.VerifiableProperties)
at java.lang.Class.getConstructor0(Class.java:3082)
at java.lang.Class.getConstructor(Class.java:1825)
at kafka.utils.CoreUtils$.createObject(CoreUtils.scala:222)
at kafka.producer.Producer.<init>(Producer.scala:62)
at kafka.javaapi.producer.Producer.<init>(Producer.scala:26)
at com.xx.KafkaProducer.generateMessgaes(KafkaProducer.java:50)
at com.xx.KafkaProducer.main(KafkaProducer.java:60)
我的制作人
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("serializer.class", "com.xxxx.CustomFileSerializer");
kafka.javaapi.producer.Producer<String, FileObj> producer = new kafka.javaapi.producer.Producer<String, FileObj>(
producerConfig);
String key = "key1";
KeyedMessage<String, RawFile> record = new KeyedMessage<String, RawFile>(topic, key, file);
producer.send(record);
producer.close();
看起来您正在使用带有新序列化器的旧制作器。旧的序列化程序在其构造函数中采用了 VerifiableProperties 值。尝试新的生产者或使用解码器的实现作为序列化器。
另请注意,序列化器 属性 的名称随新的生产者而改变,de/serializers 实现的接口(序列化器和反序列化器,而不是旧的解码器)