Maven中MySQL中jar包错误

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 依赖范围

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值