当mysql-connector-java-8.0.16.jar位于类路径中时,为什么会出现java.lang.ClassNotFoundException:com.mysql.cj.jdbc.Driver?

时间:2019-06-24 13:26:59

标签: java mysql jdbc

在Windows命令行中键入java.lang.ClassNotFoundException:com.mysql.cj.jdbc.Driver

javac src/*.java -d class -cp lib/*
java DBTest -cp lib/*

我也尝试使用com.mysql.cj.jdbc而不使用驱动程序。我将newInstance()添加到第11行,它是:

Class.forName("com.mysql.cj.jdbc.Driver").newInstance();

但没有变化。

由于不推荐使用,所以我也尝试了不带Class.forName()的尝试,但是我遇到了java.sql.SQLException:没有找到合适的驱动程序

mysql-connector-java-8.0.16.jar是lib中的唯一文件。我还尝试将其放在运行DBTest.java的文件夹中。我从命令行使用

设置Classpath
set CLASSPATH = .

并通过高级系统设置创建环境变量CLASSPATH。然后,我尝试使用-cp和不使用-cp进行编译和运行,因为它应该检查jar文件的当前目录。

我也试图在eclipse中运行它,但是eclipse崩溃了,将不再打开。

import java.sql.*;

public class DBTest{
    public static void main(String args[]) {
        try {

            Class.forName("com.mysql.cj.jdbc.Driver");

            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/employees", "root", "root");

            Statement stmt = con.createStatement();

            ResultSet rs = stmt.executeQuery("select * from employees Limit 10");
            while(rs.next()) {
                System.out.println(rs.getInt(1) + " " + rs.getString(2) + " " + rs.getDouble(3));
            }
            con.close();
        }catch(Exception e) {
            System.out.println(e);
        }
    }
}

整个错误消息是     java.lang.ClassNotFoundException:com.mysql.cj.jdbc.Driver

1 个答案:

答案 0 :(得分:1)

您以错误的顺序输入了java的参数。将参数放在之后之后,类名会将这些参数传递给类的主方法,而不会设置类路径。

您需要将参数放在之前。另外,-d class也不是java的有效参数。简而言之,您需要使用:

java -cp class:lib/* DBTest