如果我使用 Maven 依赖项(SBT 格式):
"io.confluent" % "kafka-avro-serializer" % "3.1.1"
我总是会收到警告:
[warn] Class kafka.utils.VerifiableProperties not found - continuing with a stub.
如果我编写调用的代码AbstractKafkaAvroDeserializer::deserializerConfig(Map<String, ?> props)
,我会得到一个编译器错误,因为这是重载的AbstractKafkaAvroDeserializer::deserializerConfig(VerifiableProperties props)
,即使我没有使用第二个变体,我还是会得到编译错误。
该kafka-avro-serializer
项目在“提供”范围内声明了对核心 Kafka 服务器库的 Maven 依赖项:
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_${kafka.scala.version}</artifactId>
<version>${kafka.version}</version>
<scope>provided</scope>
</dependency>
我可以通过添加 Maven 依赖项(SBT 表示法)来修复编译问题,包括警告和错误:
"org.apache.kafka" %% "kafka" % "0.10.1.1" % "provided",
这似乎是kafka-avro-serializer
项目中的一个错误。该项目不应该依赖于 Kafka 服务器代码,即使提供了范围。我正在编写一个独立运行并希望使用 Avro 编码消息的 Kafka Streams 应用程序。即使在提供的范围内,此流应用程序也不应该对 Kafka 服务器代码库有依赖关系。