本文已参与「新人创作礼」活动,一起开启掘金创作之路。
声明:本篇异常整理仅是本人在日常开发中遇到整理,解决思路并非完全正确,方案仅供参考。
1. 运行报错ClassNotFoundError
描述
在运行项目时报错ClassNotFoundError
原因
如其名,未找到对应类,和ClassNotFoundException不同,ClassNotFoundError是在加载阶段报出
- 原因一:手动引入的jar包包名或类名错误。
- 原因二:代码中的包名或类名更改
- 原因三:项目模块改名了,但是maven pom文件没有同步更改,所以一直报ClassNotFoundError。
解决方案
- 检查jar是否有效导入引用等情况
- 如果碰到改包名等情况,可能是IDEA编译缓存导致的,删除target目录,rebuild,或者invalidates caches
- 检查maven pom文件module情况
2. 项目启动报错Address already in use: bind
描述
SpringBoot项目运行启动后报错Address already in use: bind,无法启动项目。
原因
项目的端口已经被其他进程绑定,无法使用
解决方案
找到绑定端口的进程,具体方法可以网上查询,删除进程后再次启动。
3. SpringBoot集成mybatis启动报错找不到mapper
描述
启动报错A component required a bean of type '*.*Mapper' that could not be found.
原因
没有配置mapper接口包路径以及也没有在mapper接口上加上@Mapper注解
解决方案
二选一即可:
- 在每个mapper接口上加上@Mapper注解标记
- 在启动类上加上@MaperScan注解,标记mapper接口所在的包路径
4. SpringBoot报错找不到bean
描述
启动报错A component required a bean of type 'com.*.*Bean' that could not be found.
原因
- Bean类没有加上@Component注解或者其衍生的@Service等注解
- Bean类所在包没在启动类包同级以及启动类子包下
解决方案
如果是第一种原因则直接加上注解即可,这里重点说第二种原因,SpringBoot扫描Bean默认是启动类同级包以及其子包下Bean,如果是其他包下的bean,则默认不会被扫描加载,需要在启动类上配上@ComponentScan注解,将包路径加进去,允许填入一个父包路径即可,会自动扫描其子包路径
有兴趣的小伙伴可以关注公众号【暴走的怪兽君】,常更新Java干货资讯,免费提供大量教程和工具下载