ClassNotFoundException这类问题的解决方案

使用SpringBoot开发项目,要集成undertow,pom依赖没有问题如下所示:

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<!--springboot web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
&lt;!&ndash;排除tomcat容器,使用undertow&ndash;&gt;
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>-->
</dependency>

<!--<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>

启动项目后一直报错java.lang.ClassNotFoundException: javax.servlet.DispatcherType
从字面是理解就是类找不到嘛,libraries中相应的依赖查看,确实没有,网上搜了一下,大家都是说类找不到是缺少依赖,尝试了添加和undertow相关的所有依赖。
可是项目依然报错。后来看到一篇博文下的评论说,可能是依赖冲突导致的。我排查了一下自己的依赖,发现有冲突,可是不是在这个地方有冲突。然后就想,会不会是
SpringBoot的版本和undertow的版本有冲突呢?然后尝试着修改了一下springBoot的版本。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

从2.1.3改成2.0.7启动后果然不再报ClassNotFoundException的错,但是,因为项目中使用了kafka,而且还是公司自己对底层进行二次封装的kafka,
然后再次报错
Error creating bean with name 'kafkaListenerContainerFactoryConfigurer' XXXXXXX
,看到这个差点疯了。
认真看了一下项目的pom文件,然后就思考,这会不会又是版本号稳定导致的呢,然后琢磨 spring-boot-starter-parent这个玩意儿,好像是会对项目中
依赖的版本号进行管理的,那不如把kafka的版本去掉试试,果然掉版本号后,项目启动成功。
总结:类找不到的问题,要么就是没有添加相关的依赖,要么就是添加的依赖和springBoot的版本有冲突。




posted on 2020-06-04 10:26  注定要成为攻城狮的男人  阅读(10179)  评论(0编辑  收藏  举报