maven中引入MySQL依赖,jar包存在,但是驱动加载失败
pom.xml配置(前提是代码没有问题)
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
<scope>test</scope>
</dependency>
Java测试代码
package pro1.pro12;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class TestMaven {
public static void main(String args[]) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/computer_dept","root","root");
System.out.println(conn);
}catch(ClassNotFoundException e) {
e.printStackTrace();
System.out.print("驱动找不到");
}catch(SQLException e) {
e.printStackTrace();
System.out.println("数据库连接有误");
}
}
}
报错
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
第一步:检查jar包(mysql-connector-java-5.1.47.jar)
jar包没问题
第二步:是否存在文件jar包
第三步:试一下修改版本mysql驱动
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.8</version>
<scope>test</scope>
</dependency>
如果发现,还是没有解决
这时发现自己该找的都找了,但是没有办法。
解决方法
通过查询资料了解到Maven scope 依赖范围
总结说来,在POM 4中,<dependency>中还引入了<scope>,它主要管理依赖的部署。大致有 compile、provided、runtime、test、system 等几个。
compile:默认的scope,参与当前项目的编译、测试、运行、打包等 全过程 参与。 (程序员写的业务代码)
provided:编译、测试阶段存在,不会打入包中。(servlet-api.jar、JDK)
runtime:编译不需要,在运行、打包阶段参与。(mysql.jar 驱动)
test:测试需要,不会打入包中。(junit.jar)
system:不是从本地maven仓库引入,而是在本地目录的下的jar,与provided 相似 。一般不使用。 (oracle 驱动 ojdbc14.jar)
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
<scope>runtime</scope> //改为runtime
</dependency>
转载:https://blog.csdn.net/xiaojin21cen/article/details/106925972