项目启动时数据库报错:com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

Posted 93啊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目启动时数据库报错:com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure相关的知识,希望对你有一定的参考价值。


项目启动时报错:

com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

解决方法(转载):https://blog.csdn.net/lvoelife/article/details/129284611?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-129284611-blog-81065520.235%5Ev32%5Epc_relevant_increate_t0_download_v2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-129284611-blog-81065520.235%5Ev32%5Epc_relevant_increate_t0_download_v2&utm_relevant_index=2

或者:https://blog.csdn.net/qq_27471405/article/details/80921846?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-80921846-blog-129225733.235%5Ev32%5Epc_relevant_increate_t0_download_v2&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-80921846-blog-129225733.235%5Ev32%5Epc_relevant_increate_t0_download_v2&utm_relevant_index=1

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver

1. java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver

今天写老师布置的作业(JSP+HTML)写图书管理系统的时候,我发现我的代码写的完全没有问题,但是却报了一个错误,错误如下:
在这里插入图片描述

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1308) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1136)

看到这个我的第一想法就是,会不会是我的数据库配置弄错了,我是我去测试了一下我写的代码:

这是数据库表
在这里插入图片描述

测试代码

    public static void main(String[] args) throws Exception {
        Connection connection = BaseDao.getConnection();
        System.out.println(new StudentDaoImpl().getLoginStudent(connection, "11923020124").toString());
    }

运行结果:
没有任何问题的查询出来了
在这里插入图片描述


1.1 第一种解决办法(极为不推荐)

接着我就去网上搜了一下,网上给出的结果是,要把数据库连接的依赖放在tomcat的lib目录下面,这样确实是可行的,就像这样:
在这里插入图片描述

这时去启动tomcat服务器是完全没有问题的

但我总感觉怪怪的,为啥我以前没有这样导入过依赖就可以运行项目(我喜好使用Maven项目管理工具。) 以前我用这个模板建立web项目的时候,从来没有往tomcat的lib导入过依赖


1.2 第二种解决办法(有点小瑕疵,但还可以接受)

这个方法是在创建maven项目的时候选择org.jetbrains.idea.maven.model.MavenArchetype模板

例如这样创建项目

不会配置Tomcat的请点击


这是我刚刚创建的测试项目:发现项目结构的 Artifacts自动导入了依赖,这就是我们为什么不用手动在导入tomcat lib目录导入依赖的根本原因!!!
在这里插入图片描述

Artifact 是maven中的一个概念,表示某个module要如何打包。这又多个模块的概念,不懂的就先当他是个web项目吧, 例如war exploded、war、jar、ear等等这种打包形式; 一个module有了 Artifacts 就可以部署到应用服务器中了


1.3 第三种解决办法(主推)

用模板干啥呢 是不是 代码这种玩意儿 手🦌他不香嘛 哈哈哈哈哈哈哈

下面演示一遍我是怎么玩的

1.3.1 创建空maven项目(不使用模板)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


1.3.2 导入web框架

在这里插入图片描述
在这里插入图片描述


1.3.3 手动给Artifacts导入依赖

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
选择Library Files
在这里插入图片描述
在这里插入图片描述

这样我们的项目就有依赖了,就不用在Tomcat的lib目录添加依赖了,注意,每次pom.xml文件添加新的依赖都都要把新的依赖加进来,不然项目无法正常运行



以上是关于项目启动时数据库报错:com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure的主要内容,如果未能解决你的问题,请参考以下文章

jar报错红线项目能正常启动,jar不报错项目不能启动

JDBC自定义连接池

Maven 项目打包及启动时的报错解决

Idea------启动项目时yml文件包含中文报错

vue 项目项目启动时由于EsLint代码校验报错

vue 项目启动时npm run dev 报错