【问题标题】:Upgrading to Spring-boot 2.3.1.RELEASE and kafka, can't find kafka.utils.TestUtils升级到Spring-boot 2.3.1.RELEASE和kafka,找不到kafka.utils.TestUtils
【发布时间】:2020-07-15 21:23:27
【问题描述】:

使用Spring-boot 2.2.6.RELEASESpring-kafka 2.4.1.RELEASE 正常运行我们的测试套件的项目在升级到Spring-boot 2.3.1.RELEASESpring-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)

我是否遗漏了一些明显的兼容性问题,或者需要排除一些暂时的依赖关系?

【问题讨论】:

    标签: spring-boot apache-kafka


    【解决方案1】:

    以防万一有人遇到同样的问题,解决方案是从spring-kafkaspring-kafka-test 中删除版本并为测试添加测试分类器:

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

    【讨论】:

      猜你喜欢
      • 2020-02-25
      • 1970-01-01
      • 2021-09-15
      • 2023-04-07
      • 2021-12-22
      • 2022-01-06
      • 2020-12-02
      • 1970-01-01
      • 2021-10-15
      相关资源
      最近更新 更多