在Java中常遇到的异常整理:二

136 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。


声明:本篇异常整理仅是本人在日常开发中遇到整理,解决思路并非完全正确,方案仅供参考。

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干货资讯,免费提供大量教程和工具下载