春季启动嵌入式Kafka集成会引发NoClassDefFoundError

时间:2019-04-29 16:14:02

标签: java spring spring-boot apache-kafka

Spring Boot:2.0.3.RELEASE

org.apache.kafka.kafka-streams:1.0.0

org.apache.kafka.kafka-客户端:1.0.0

org.springframwork.kafka:spring-kafka-test:2.1.7.RELEASE

我有一个使用Kafka的Spring Boot应用程序。我正在尝试按照https://blog.mimacom.com/testing-apache-kafka-with-spring-boot/创建集成测试。

当我添加@EmbeddedKafka批注时,运行时会出现错误

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'kafkaEmbedded': Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/apache/kafka/common/record/RecordFormat
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1699) ~[spring-beans-5.0.8.RELEASE.jar:5.0.8.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:407) ~[spring-beans-5.0.8.RELEASE.jar:5.0.8.RELEASE]

有一些关于此错误的google结果,但是它们都在旧的kafka客户端版本上,应该在我使用的版本中进行修复。

这看起来像是版本不匹配,但是我不清楚我应该给我什么。

1 个答案:

答案 0 :(得分:1)

如注释中所示,此类错误始终是由于库版本不兼容引起的。以下组合有效

spring boot: 2.1
spring-streams/spring-client: 2.0.1 (Using 2.2.0 creates some compatibility issues)
spring-kafka: 2.2.5.RELEASE