国庆长假后上班第一天,按照以往习惯,正常开机、IDEA中打开项目,点击SpringBoot启动类,进行项目启动,立即报一个如下错误:
看了下报错信息,估摸着是项目启动时,@SpringBootApplication(scanBasePackages = {"${yudao.info.base-package}.server","${yudao.info.base-package}.module"}),这个注解在扫描BasePackages时,没有找到占位符"yudao.info.base-package"所对应的内容,随后将其替换成自己的的基础包名,重新启动,然后依旧报错,具体如下:
继续向下拉,看看底层代码报的是什么问题,于是展示出如下问题:
一脸懵逼,首先认为这是不是maven的依赖没有引入,于是根据org.springframework.kafka.core.KafkaTemplate这个报名,去maven依赖的库里查找,找到如下结果:
项目中有此jar包的依赖,顿时觉得头大,这个问题肯定另有玄机,于是猜测是不是依赖jar包的版本问题呢,打开启动类模块下的pom文件,使用快捷键Ctrl + Shift + Alt + u,进入到依赖图的界面,具体如下:
这么密集,看起来实在不友好,于是下载插件Maven Helper,安装完成后重启,再次打开pom文件,底部增加了一个Analyzer页签,如下:
点击后,进入到插件展示页面,查看依赖引入的整体情况,它主要包含依赖冲突、依赖列表、依赖树状列表三个选项,但是仔细一查,冲突列表中并没有和kafka相关的,只有三个其他的依赖包,具体如下:
但是先不管了,把冲突解决再说,看看管不管用,点击查看有冲突的引入包,双击后右侧工作框中会出现冲突的具体情况,如图:
右键点击红色的3.19.0【compile】行,出现Exclude选项,左键点击,其他的冲突依次这样解决,最后点击Refresh UI,冲突全部消失,pom文件中增加了三个包的排除配置,具体如图:
重新加载maven依赖项,点击SpringBoot启动类进行启动,问题依然如故,我琢磨半天后,认为问题应该不是maven依赖的造成的,而是其他原因导致的。
随后,继续使用debug模式,查看出错的具体信息,在一层一层的进入到读取配置信息的方法中,发现在配置环境变量时,读取到的配置信息中,activeProfiles=[],defaultProfiles=[default],这里似乎有点问题,我重新看了下当前的application.yaml文件中,发现profiles:active: local的配置的确没有问题,但应该是没有生效,于是,继续在IDEA的启动配置中进行设置,具体如图:
完成后重启,错误依旧,但加载的配置信息有了变化,如图:
仔细对比这两个信息,经过网上的查询和自己的分析,怀疑SpringBoot在启动时,没有加载配置文件,至于具体为什么不加载,暂不关心,经过一番搜索后,网上给出办法是在IDEA中,将Modeule Setting配置中的Resource加入到资源设置中,具体如图:
设置完成后,resources的文件夹形状有了改变,右下角增加了三道横杠,如图:
点击确定后重启,项目能够正常启动了,但依然需要解决根本原因,确定是什么导致的资源文件没有被配置,于是查看pom文件,发现有一段配置信息有问题,如下图:
突然想到,在节前进行mybatis的mapper资源文件配置时,设置了路径,这里的/src/main/java似乎不对,应该设置为/src/main/resources,于是将之前所有的更改全部回退,只修改pom文件的resources内容,改完后进行重启,项目能够正常启动,至此,问题已全部解决。但究其原因,还是对maven的pom文件不了解,只照搬了网上的解决办法,而没有深究具体原因及原理。在此,做一个解决过程记录,希望能为后面的开发少走弯路做些贡献。