0

我一直在尝试使用 EmbeddedKafka 创建集成测试,但是在尝试运行它时遇到了缺少依赖项的问题,这是错误:

由于缺少依赖项 org/I0Itec/zkclient/serialize/ZkSerializer,无法加载类 org.springframework.kafka.test.EmbeddedKafkaBroker

我看到一些东西说这与我的依赖关系有关,所以这是我的依赖关系:

springBootVersion = '2.3.5.RELEASE'

compile("org.springframework.boot:spring-boot-starter-web:${springBootVersion}")
compile("org.springframework.kafka:spring-kafka:${springBootVersion}")
testCompile("org.springframework.boot:spring-boot-starter-test:${springBootVersion}",
            'org.spockframework:spock-core:1.2-groovy-2.4',
            'org.spockframework:spock-spring:1.2-groovy-2.4',
            'com.microsoft.azure:spring-data-cosmosdb:2.3.0',
            'com.nimbusds:oauth2-oidc-sdk:5.64.4',
    )
testCompile("org.springframework.kafka:spring-kafka-test:${springBootVersion}")

所以,我的问题是,我错过了什么吗?

编辑

按照指示更改版本后,我得到了一个不同的错误:

创建名为“embeddedKafka”的 bean 时出错:调用 init 方法失败;嵌套异常是 java.lang.NoClassDefFoundError: scala/math/Ordering$$anon$7

我已经添加了 scala 依赖项,但仍然有同样的问题:

testImplementation("org.scala-lang:scala-library:2.12.11")
testImplementation("org.scala-lang:scala-reflect:2.12.11")
4

1 回答 1

0

你不知何故有一个不匹配的kafkaVs。kafka-clients类路径上的 jars;它们都必须是相同的版本。

您通常不应在引导的依赖项上指定版本,而应使用其依赖项管理。

您正在引入 spring-kafka 2.3.5,而 spring-boot 2.3.5 需要 spring-kafka 2.5.7。

Spring-kafka 2.5.x 使用 kafka-clients 2.5.1。

请参阅此处了解如何在使用与 Boot 规定的版本不同的版本时覆盖 kafka jar 的版本。

于 2021-04-09T16:38:31.383 回答