當我試圖從spring-kafka-test中使用@EmbeddedKafka時,我在運行測驗時最終出現了ClassNotFoundException: scala.collection.convert.AsJavaExtensions(完整堆疊跟蹤here)。
我嘗試了不同的Kafka版本(org.apache.kafka:kafka_2.11:2.4.1而不是org.apache.kafka:kafka_2.12:2.8. 0),以及不同版本的org.scala-lang:scala-library(2.13.6、2.12.10、2.11.12、2.10.6)。
為了解決這個問題,我需要做什么呢?
下面是我的一些建議。
下面是一個最小的例子來重現這個問題:
src/main/kotlin/com/acme/Application.kt
package com.acme
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
@SpringBootApplication
class Application
fun main(args: Array<String>) {
runApplication<Application>(*args)
}
src/test/kotlin/com/acme/integration/TestFullStack.kt
package com.acme.integration
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.kafka.test.context.EmbeddedKafka
import org.springframework.test.context.junit.jupiter.SpringExtension
@ExtendWith(SpringExtension::class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@EmbeddedKafka( topics = ["testtopic"], controlledShutdown = true)
class TestFullStack {
@Test
fun `test init`() {
}
}
build.gradle.kts
plugins {
id("org.springframework.boot"/span>) version "2.5.4"/span>
id("io.spring.dependency-management") 版本"1.0.11.RELEASE"。
kotlin("jvm") 版本"1.5.21"。
kotlin("plugin.spring") 版本"1.5.21"。
}
group = "com.acme"/span>
版本 = "1.0.0-SNAPSHOT"/span>
java.sourceCompatibility = JavaVersion.VERSION_11
資源庫 {
mavenCentral()
}
依賴性 {
implementation(group = "org.apache.kafka"/span>, name = "kafka_2.12"/span>, version = "2.8.0"/span>)
implementation(group = "org.scala-lang"/span>, name = "scala-library"/span>, version = "2.12.10"/span>)
implementation(group = "org.springframework.kafka", name = "spring-kafka", version = "2.7.6")
implementation(group = "org.springframework.boot", name = "spring-boot-start-web")
implementation(group = "org.jetbrains.kotlin", name = "kotlin-reflect")
testImplementation(group = "org.springframework.boot", name = "spring-boot-start-test")
testImplementation(group = "org.springframework.kafka"/span>, name = "spring-kafka-test"/span>, version = "2.7.6"/span>)
testImplementation(group = "org.testcontainers"/span>, name = "kafka"/span>, version = "1.16.0")
testImplementation(group = "org.jetbrains.kotlin", name = "kotlin-test-junit")
}
任務 {
withType<Test> {
testLogging.exceptionFormat = org.gradle.api.tasks.testing.logging.TestExceptionFormat.FULL
useJUnitPlatform()
}
}
settings.gradle.kts
rootProject.name = "acmetest"/span>
Dockerfile
FROM openjdk:11-jdk-slim
WORKDIR /home/test
增加。/home/test
運行 ./gradlew 測驗
uj5u.com熱心網友回復:
通過使用正確的依賴性使其作業。
dependencies {
implementation(group = "org.springframework.boot", name = "spring-boot-start-web")
implementation(group = "org.apache.kafka", name = "kafka_2.13" )
implementation(group = "org.apache.kafka", name = "kafka-lients")
testImplementation(group = "org.springframework.boot", name = "spring-boot-starter-test" )
testImplementation(group = "org.jetbrains.kotlin", name = "kotlin-test-junit" )
testImplementation(group = "org.springframework.kafka", name = "spring-kafka-test")
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/318681.html
標籤:
