问题出现
自己在写一个连接C3P0数据库连接池库的测试类,运行该类后出现了下图这个问题
这是我写的测试类
package demo;import com.mchange.v2.c3p0.ComboPooledDataSource;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;public class test {public static DataSource ds = null; // 声明一个数据源static {ds = new ComboPooledDataSource();}public static void main(String[] args) throws SQLException {Connection conn = ds.getConnection();System.out.println(conn);if (conn!= null) {System.out.println("连接成功");} else {System.out.println("连接失败");}}
}
运行这个Java文件,控制台在这里卡了很久...
大概10秒之后就出现了这样的问题:java.sql.SQLException: No suitable driver
到控制台的末尾就直接结束了,即运行这个Java代码没有成功
分析与解决
我试过了以下方法,都没有成功解决:
1. c3p0-config.xml 文件是否有书写错误
但检查后,并没有哪里写错,排除
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config><default-config><property name="driverClass">com.mysql.cj.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql://localhost:3306/company?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8</property><property name="user">root</property><property name="password">2076805863</property></default-config>
</c3p0-config>
2. 没有将mysql-connector-java-****-bin.jar包加入到Java运行环境的外部jar包的存放的位置。或者没有Build Path
我的相关jar都是通过maven里的pom联网导入下载的,项目结构里也显示有相关jar包,排除
项目结构如下:
3. 驱动jarbao版本不兼容
这个我自己也排查过了,MySQL版本是8.0.33,jar包版本也是8.0.33,不是不兼容的问题,排除
具体我是怎么解决的,是我自己先写了个测试类,如下
package demo;import com.mchange.v2.c3p0.ComboPooledDataSource;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;public class test {public static DataSource ds = null; // 声明一个数据源static {ds = new ComboPooledDataSource("test");}public static void main(String[] args) throws SQLException {Connection conn = ds.getConnection();System.out.println(conn);if (conn!= null) {System.out.println("连接成功");} else {System.out.println("连接失败");}}
}
再到 c3p0-config.xml 文件下加上这个相关的内容:
当我在点击test类测试的时候,控制台出现了下面这样的新问题:
虽然还是没有运行成功,但是多了个新问题。这也就代表着我刚刚在c3p0-config.xml 文件下添加的内容是无效的,系统没有识别到。
所以我就想,是不是我 c3p0-config.xml 文件放错位置了
因为我的IDEA是2023版本的,项目结构目录是这样的:
我是直接把这个xml文件放在了src里面,出现刚才那样的新问题应该是我整个xml文件是无效的。
所以我把xml文件移动到了src 下面的 main 下面的 resources文件夹下,没有放在那个META-INF文件夹下,如下图:
再去运行刚才的test.java文件,结果运行成功,唰的一下,很快~~~
总结
所有以后看到了java.sql.SQLException: No suitable driver的问题
从以下方法找问题:
1. c3p0-config.xml 文件是否有书写错误
2. 没有将mysql-connector-java-****-bin.jar包加入到Java运行环境的外部jar包的存放的位置。或者没有Build Path
3. 驱动jarbao版本不兼容
4. c3p0-config.xml 文件的位置是否放错地方
我的原因就是放错了地方,但是好像早期IDEA版本是可以直接将c3p0-config.xml文件放在 src根目录下的,应该是IDEA版本问题,对,就是这个