项目能编译通过,启动连数据库时报驱动类不存在,pom 里确实写了依赖。日志里能对上时间点,这种反而好排。
驱动依赖的作用域被限制为 test 或 provided,运行时类路径里没有这个包。这一点先确认清楚,后面就不用反复试。
<dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> jar tf target/app.jar | grep mysql
「Java 驱动类找不到」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。偶发问题先统计频率,一小时几次和一天一次,查法完全不同。
改完顺手把文档补一句,省得下次自己重新推一遍。监控和日志的时间要对上,时区不一致会多绕很大一圈。
临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。
处理上按这个顺序:检查依赖作用域;打包产物里确认包含驱动;容器部署时确认依赖被一起打进镜像。
结果对不对很好判断,应用启动能成功建立数据库连接,查询接口返回正常。