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的版本有沖突。
 
        
 
        




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM