Spring

NoClassDefFoundError: 스칼라/수학/spring-kafka-test 2.5.7을 사용한 주문

기록만이살길 2022. 12. 19. 22:28
반응형

NoClassDefFoundError: 스칼라/수학/spring-kafka-test 2.5.7을 사용한 주문

1. 질문(문제점):

JUnit 5 확장을 제공하는 작은 라이브러리가 있는데 , 전체 컨텍스트를 버리는 대신 테스트 간에 오프셋을 최신으로 재설정하는 대신 EmbeddedKafkaBroker사용하는 것보다 성능이 향상 됩니다.@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에서 다양한 Scala 라이브러리 를 사용하는 것으로 해결됩니다 2.12. 확장 프로그램을 시작하려고 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 버전을 재정의하는 문제만 나타났습니다. 내가 무엇을 놓치고 있는지 또는 어떻게 고칠 수 있는지 아이디어가 있습니까?

2. 해결방안:

여기에 같은 문제가 있습니다. Spring Boot 2.3.5에서 사용되는 spring-kafka 2.5.7.RELEASE를 살펴보고 내 build.gradle에 대한 해결 방법으로 내 프로젝트에 동일한 스칼라 의존성을 추가했습니다.

dependencies {
    ...
    testImplementation("org.scala-lang:scala-library:2.12.11")
}

이것은 잠시 동안 내 문제를 해결했습니다. 다음 spring-kafka 버전에서 수정되기를 바랍니다.

반응형