spring - 初始化 SpringBoot 应用程序时出错。我有一个 SpringBoot 应用程序。2.1.5.RELEASE 使用Kakfa
问题描述
我有一个 SpringBoot 应用程序。2.1.5.RELEASE 使用 Spring for Apache Kafka(基于 Kafka 的消息传递解决方案),使用 IntelliJ IDEA 我创建了这个服务:
public class KafkaProducerService {
private static final String TOPIC = "bendiciones";
private final KafkaTemplate<String,String> kafkaTemplate;
public KafkaProducerService(KafkaTemplate<String, String> kafkaTemplate) {
this.kafkaTemplate = kafkaTemplate;
}
public void sendMessage(String message){
log.info(String.format("$$ -> Producing message --> %s",message));
this.kafkaTemplate.send(TOPIC,message);
}
}
但是当我启动应用程序时。我收到了这个错误:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.kafka.config.internalKafkaListenerAnnotationProcessor': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.kafka.annotation.KafkaListenerAnnotationBeanPostProcessor]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/springframework/core/log/LogAccessor
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1303)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1197)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204)
at org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:228)
at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:721)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:534)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:142)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:316)
at com.bendiciones.buenas.noches.Application.main(Application.java:38)
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.kafka.annotation.KafkaListenerAnnotationBeanPostProcessor]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/springframework/core/log/LogAccessor
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:184)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1295)
... 15 common frames omitted
Caused by: java.lang.NoClassDefFoundError: org/springframework/core/log/LogAccessor
这些是我在 po 文件中的依赖项:
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>2.3.3.RELEASE</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
</parent>
解决方案
这类错误通常来自于混合来自不同版本框架的 jar。它们都应该匹配,否则你会遇到这类问题。
查看您的依赖关系,您正在使用依赖于 Spring Framework 5.1.x 的 Spring Boot 2.1.x。您还想使用 Kafka,其中包括 Spring Kafka 2.3.3,但是此版本使用/预期 Spring 5.2。Spring 5.1 和 5.2 不兼容,因此您遇到了问题。
从 Spring Kafka 依赖项中删除<version>
标签。Spring Boot 会自动为您管理对适当兼容版本的依赖关系。
推荐阅读
- javascript - 如何让 div 覆盖每个 HTML 元素?
- reactjs - 我去在数组中使用 map 函数,但它给了我错误
- python - Python:在 List 或 numpy.ndarry 中查找最大的 Top-n 值的索引
- javafx - JavaFX PathTransition 使用 pause() 方法
- python - AttributeError:模块“users.views”没有属性“注册”
- ios - Swift:展示了两个视图控制器
- javascript - JavaScript for 循环中 object.key 和 object[key] 的区别
- python - 正则表达式匹配第 N 次出现到字符串结尾
- python - Python类属性不能使用自己的对象
- python - 使用 discord.py 运行多个命令