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

mysql8.0.19
mysql-connector-java-8.0.20.jar
IntelliJ IDEA 2020.1.1 (Ultimate Edition)

import java.sql.Connection;
import java.sql.DriverManager;

public class DBConnection {

    // MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL
    private static final String Driver = "com.mysql.cj.jdbc.Driver";
    private static final String URL = "jdbc:mysql://localhost:3306/testweb?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8";
    // 数据库的用户名与密码,需要根据自己的设置
    private static final String USER = "root";
    private static final String PASSWORD = "KBjiayou666";
    private Connection conn = null;

    public DBConnection() throws Exception {            //进行数据库的连接
        try{
            Class.forName(Driver);
            this.conn = DriverManager.getConnection(URL,USER,PASSWORD);
        } catch (Exception e){
            throw e;
        }
    }

    public Connection getConnection(){                  //取得与数据库的连接
        return this.conn;
    }


    public void close() throws Exception{               //关闭数据库的连接
        if(this.conn !=null){
            try {
                this.conn.close();
            }catch (Exception e){
                throw e;
            }

        }
    }
}

在 Class.forName(Driver)出错了,报错信息java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
造成此问题的原因有:

  1. 驱动名错误,没有和mysql版本对应。

  2. idea没有导入connector的jar包
    so on…

分析:
由于 MySQL 8.0 以上版本 - JDBC 驱动名有个cj
所以我确保没有写错驱动名以及URL

// MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
    static final String DB_URL = "jdbc:mysql://localhost:3306/RUNOOB";
 
    // MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL
    //static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";  
    //static final String DB_URL = "jdbc:mysql://localhost:3306/RUNOOB?useSSL=false&serverTimezone=UTC";

具体请参考runoob的java连接数据库教程(点击传送门)

于是尝试解决问题2
点击file ->project structure
在这里插入图片描述
在这里插入图片描述
点击OK
重启IDEA
再运行java程序 ok~

在网上好了很多的问题 都没有解决,针对web,大家用的都是的在tomcat下的lib里添加mysql-connector的jar包 但是还是没有解决 还是连接不上,也在url里面添加后缀了 package jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class JDBCDemo { private static final String URL="jdbc:mysql://localhost:3306/db4?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Hongkong"; private static final String USERNAME="root"; private static final String PWD="root"; public static void update() {//增删改 Connection connection=null; Statement stmt =null; try { //导入驱动,加载具体驱动类 Class.forName("com.mysql.cj.jdbc.Driver");//加载具体的驱动类 //与数据库建立连接 connection=DriverManager.getConnection(URL,USERNAME,PWD); //增删改 stmt = connection.createStatement(); String sql="insert into student values(4,'kxk','123')"; int result = stmt.executeUpdate(sql); //处理结果:显示受影响行数 System.out.println(result); }catch (ClassNotFoundException e) { e.printStackTrace(); }catch (Exception e) { e.printStackTrace(); }finally { if(stmt!=null) { try { stmt.close(); }catch (SQLException e) { e.printStackTrace(); } } if(connection!=null) { try { connection.close(); }catch (SQLException e) { e.printStackTrace(); } } } } public static void main(String[] args) { update(); } } 报错还是 java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264) 不知道哪里出现了问题,求助
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页