【发布时间】:2021-02-16 11:52:24
【问题描述】:
我有一个小型库,它提供围绕 EmbeddedKafkaBroker 的 JUnit 5 扩展,它试图通过在测试之间将偏移量重置为最新而不是丢弃整个上下文,从而比仅使用 @DirtiesContext 具有更高的性能。
我的 build.gradle 是:
import org.springframework.boot.gradle.plugin.SpringBootPlugin
plugins {
id 'org.springframework.boot' version '2.3.5.RELEASE' apply false
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
}
dependencyManagement {
imports {
mavenBom SpringBootPlugin.BOM_COORDINATES
}
}
sourceCompatibility = '1.8'
dependencies {
implementation 'org.junit.jupiter:junit-jupiter-api'
implementation 'org.springframework.kafka:spring-kafka'
implementation 'org.springframework.kafka:spring-kafka-test'
compileOnly 'org.springframework.integration:spring-integration-core'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntime 'org.springframework.integration:spring-integration-core'
testRuntime 'org.junit.jupiter:junit-jupiter-engine'
}
这解决了使用spring-kafka:2.5.7 和2.12 的各种Scala 库。当扩展程序尝试启动 EmbeddedKafkaBroker 时,出现以下异常:
java.lang.NoClassDefFoundError: scala/math/Ordering$$anon$7
at kafka.api.ApiVersion$.orderingByVersion(ApiVersion.scala:45)
at kafka.api.ApiVersion.compare(ApiVersion.scala:139)
at kafka.api.ApiVersion.compare$(ApiVersion.scala:138)
at kafka.api.KAFKA_2_5_IV0$.compare(ApiVersion.scala:339)
at kafka.api.KAFKA_2_5_IV0$.compare(ApiVersion.scala:339)
at scala.math.Ordered.$greater$eq(Ordered.scala:91)
at scala.math.Ordered.$greater$eq$(Ordered.scala:91)
at kafka.api.KAFKA_2_5_IV0$.$greater$eq(ApiVersion.scala:339)
at kafka.server.KafkaConfig.<init>(KafkaConfig.scala:1561)
at kafka.server.KafkaConfig.<init>(KafkaConfig.scala:1269)
at org.springframework.kafka.test.EmbeddedKafkaBroker.afterPropertiesSet(EmbeddedKafkaBroker.java:313)
到目前为止,我所做的搜索只发现了覆盖特定 kafka 或 scala 版本的问题,我没有这样做。任何想法我缺少什么,或者如何解决它?
【问题讨论】:
标签: java spring scala spring-kafka