java小白的成长记录之项目启动失败

430 阅读3分钟

一、背景

害,距离上一篇成长记录已经有段时间了,中间由于各种各样的事情耽误导致未能静下心来记录,罪过罪过

最近新开一个java项目,用的是组内提供的项目模板,原本是多模块的项目,但是由于自己的项目只有一个模块,就把模板改了改,开始用了起来。

一开始写个http接口啥的用的都挺正常的,然后开始连接数据库,导入mybatis,然后就发现程序启动报错,于是开始了排查之旅。

二、排查之旅

(1)提示没有配置数据源

咦,数据源的配置分明在application-dev.yml写的清清楚楚的,都是从之前项目copy过来的,怎么会有问题?

在网上查找了下相关的资料,尝试解决方案,并将spring-datasource的相关配置来回检查,来回移动位置,但始终没有变化。

(2)yml文件没有生效

将yml的配置参数统统丢掉,只留下server-port,将端口改为7777,再次启动程序,发现启动是正常的,但是端口号并没有更改,还是监听的8080,突然有点方向了,那么为什么yml文件没有生效呢?

请教有经验的同事+网上查找,按理说resources里面的yml文件肯定是会生效的呀,又陷入了死胡同!

(3)spring boot 启动探究

spring boot 启动的时候是怎么将resources里面的配置引入进来的呢?

blog.csdn.net/u014044812/…

blog.csdn.net/chengkui199…

上面这两篇文章将配置文件的加载流程写的很清楚,也实际调试了一番,看到去读取classpath:/application.yml的时候读不到

(4)classpath的问题?

  1. src 路径下的文件 在编译后都会放到 WEB-INF/classes 路径下。默认classpath 就是指这里。

  2. 用maven构建 项目时,resources 目录就是默认的classpath

看了下果然是空空如也,那么就应该是编译的时候没有导入进来的原因了!

(5)编译

编译是根据pom.xml来的,仔细查看里面的参数,在顶部清清楚楚的写着罪魁祸首!

<packaging>pom</packaging>

于是去查找了下相关资料:

POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的一个XML文件:pom.xml。此文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的继承和依赖关系等等。在Maven项目中,必须包含pom.xml文件。

Maven常用的打包类型:

Maven项目常用的打包类型分为:jar、war、pom等类型。

默认打包类型为:jar。

三、解决与验证

去掉这行代码或者改成jar,验证一波,果然一切正常了~

四、后记

在转java的过程中总能碰到其他同事遇不到的问题,主要是对一些参数配置不甚了解,

过程中也请教过同事,对pom.xml的检查力度比较小,关注点都集中在yml文件上,可能正常的开发都不会写错这边打包方式吧

其实也挺好的,经过这次排查,了解了springboot的启动、打包方式的不同、classpath等内容,

慢慢踩坑,慢慢填坑,才能慢慢成长。