报错信息

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'KafkaListener' 
defined in URL [jar:file:/opt/tomcat/webapps/xxx/WEB-INF/lib/xxx.jar!/com/abc/kafka/listener/KafkaListener.class]: 
Post-processing of merged bean definition failed; 
nested exception is java.lang.IllegalStateException: Failed to introspect Class [com.abc.kafka.listener.KafkaListener] from ClassLoader [ParallelWebappClassLoader

错误分析

  • 引用了没有依赖的类,导致类加载器不能正常加载。
  • 导致该错误的原因一般是:某一pom依赖使用了<scope>provided</scope>标签,此标签意思是在编译、测试过程中此依赖生效,但是在运行过程中此依赖会被去除掉的,所以导致类加载器加载不到依赖而报错。
  • provided一般用于父工程定义各个依赖的版本,因为 provided具有继承性。

问题解决

  • 所以一般去除掉pom依赖中的<scope>provided</scope>标签就解决了。
  • 但是我遇到的那个问题是由于两个项目中依赖互相引用后,又排除了一些依赖项导致的,只需要把需要用到的类抽出来放在不被排除依赖的工程中即可解决。
Logo

一站式 AI 云服务平台

更多推荐