java - 使用 Avro 序列化程序初始化 Kafka Producer 时出错:java.lang.NoClassDefFoundError
问题描述
我无法让 KafkaProducer 实例化为值序列化程序配置属性接受 avro 序列化程序。我安装kafka-avro-serializer-5.2.2.jar
了
mvn install:install-file -DgroupId=io.confluent -DartifactId=kafka-avro-serializer \
-Dversion=5.2.2 -Dpackaging=jar -Dfile=C:/Users/myuser/Downloads/kafka-avro-serializer-5.2.2.jar
jar 和相关文件已添加到~\.m2\repository\io\confluent\kafka-avro-serializer\5.2.2
. 然后,我将以下内容添加到依赖项中的项目 POM 文件中:
<dependency>
<groupId>io.confluent</groupId>
<artifactId>kafka-avro-serializer</artifactId>
<version>5.2.2</version>
</dependency>
然后我的客户中的以下导入工作正常;代码编译
import io.confluent.kafka.serializers.KafkaAvroSerializer;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerConfig;
但是运行这个:
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, KafkaAvroSerializer.class.getName());
final Producer<String, Object> producer = new KafkaProducer<>(props);
结果错误:
Exception in thread "main" java.lang.NoClassDefFoundError: io/confluent/common/config/ConfigException
我在这里发现了一个类似的问题。但我没有使用 Kafka Connect。还
解决方案
您必须为通用配置添加一个依赖项。
<dependency>
<groupId>io.confluent</groupId>
<artifactId>common-config</artifactId>
<version>5.2.2</version>
</dependency>
该类在此 JAR 中可用。
推荐阅读
- google-chrome - 如何在浏览器中缓存所有请求?
- android - 如何在条带上上传图片?
- javascript - D3 在较小的屏幕尺寸上定位工具提示
- prolog - 在 SWI Prolog 中定义运算符
- php - 使用 PHP 替换内容特定的 HTML 标记
- python - 如何辨别我的 Python 模块是否被 Ansible 调用?
- swift - 在 XCTestCase 中未调用 UITextFieldDelegate
- css - 我可以直接从 chrome DevTools 编辑我的 Angular 项目的 CSS 文件吗?
- powerbi - Power BI中是否有办法随机显示多列的总和
- vba - 基于切换按钮的过滤