При обновлении до Spring-boot 2.3.1.RELEASE и kafka не удается найти kafka.utils.TestUtils - PullRequest
0 голосов
/ 14 июля 2020

В проекте, в котором наш тестовый пакет работал нормально с Spring-boot 2.2.6.RELEASE и Spring-kafka 2.4.1.RELEASE, возникают проблемы при обновлении до Spring-boot 2.3.1.RELEASE и Spring-kafka 2.5.3.RELEASE. Кажется, он не может найти kafka.utils.TestUtils.

Я попытался оставить пустую версию spring-kafka, чтобы позволить spring -boot загрузить совместимую версию, но ошибка все еще существует.

файл build.gradle:

dependencies {
  api "org.springframework.boot:spring-boot-starter-data-jpa:2.3.1.RELEASE"
  api "org.springframework.boot:spring-boot-starter-web:2.3.1.RELEASE"
  api "org.springframework.kafka:spring-kafka:2.5.3.RELEASE"
  api "org.springframework.ws:spring-ws-core:3.0.9.RELEASE"

  testImplementation "org.springframework.boot:spring-boot-starter-test:2.3.1.RELEASE"
  testImplementation "org.springframework.kafka:spring-kafka-test:2.5.3.RELEASE"
}

И ошибка, которую я вижу:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'embeddedKafka': Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: kafka/utils/TestUtils
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:407)
    at org.springframework.kafka.test.context.EmbeddedKafkaContextCustomizer.customizeContext(EmbeddedKafkaContextCustomizer.java:116)
    at org.springframework.test.context.support.AbstractContextLoader.customizeContext(AbstractContextLoader.java:187)
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:127)
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:60)
    at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoading(AbstractDelegatingSmartContextLoader.java:275)
    at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:243)
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124)
    ... 50 more
Caused by: java.lang.NoClassDefFoundError: kafka/utils/TestUtils
    at org.springframework.kafka.test.EmbeddedKafkaBroker$EmbeddedZookeeper.<init>(EmbeddedKafkaBroker.java:655)
    at org.springframework.kafka.test.EmbeddedKafkaBroker.afterPropertiesSet(EmbeddedKafkaBroker.java:287)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1855)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1792)
    ... 59 more
Caused by: java.lang.ClassNotFoundException: kafka.utils.TestUtils
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)

Есть ли какая-то очевидная проблема совместимости, которую мне не хватает, или какая-то временная зависимость, которая требует быть исключенным?

1 Ответ

0 голосов
/ 15 июля 2020

На случай, если кто-то столкнется с той же проблемой, решение заключалось в том, чтобы удалить версию из spring-kafka и spring-kafka-test и добавить тестовый классификатор для теста:

testImplementation group: 'org.apache.kafka', name: "kafka_2.12", classifier: "test"
...