你们好,我是金金金。
场景
启动项目,一直报数据库连接超时:
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
The error may exist in com/xuecheng/system/mapper/DictionaryMapper.java (best guess)
The error may involve com.xuecheng.system.mapper.DictionaryMapper.selectList ### The error occurred while executing a query
Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
排查
数据库超时我首先想到的是不是 我数据库连接名称写错了?又或者是端口写错了?
经过反复多次观看,确实没错,到处百度也没解决问题。
解决
- 也是无意间看项目的时候,发现了一些东西。由于我这个模块代码是从别处复制过来的,如下
注意看我框住的地方,就是因为这个玩意导致~
target
目录是Maven
或者Gradle
构建工具在构建Java
项目时生成的输出目录。它包含编译后的字节码文件、打包的JAR
或WAR
文件,以及其他构建过程中生成的临时文件。
所以需要把这些之前生成的
target
目录都删掉,重新跑一下项目就ok
了~
测试
- 经过测试,项目成功启动~
总结
-
target
目录中的内容是编译后的字节码。当你运行项目时,JVM
会加载这些.class
文件,而不是源代码。 -
如果
target
目录已经存在并且内容是最新的,构建工具或IDE
会直接使用它而不是重新编译源代码。 -
如果你修改了源代码,但没有重新编译,
target
目录中的字节码文件不会更新,导致运行时的代码与源代码不同步。
因此,如果你发现代码修改后运行结果没有变化,可能需要检查是否重新编译了项目。
- 编写有误还请大佬指正,万分感谢。