【问题标题】:Why do I get java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver when mysql-connector-java-8.0.16.jar is in the classpath?当 mysql-connector-java-8.0.16.jar 在类路径中时,为什么我得到 java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver?
【发布时间】:2019-06-24 13:26:59
【问题描述】:

当我在 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 的文件夹中。我使用

从命令行设置类路径
set CLASSPATH = .

并通过高级系统设置创建环境变量 CLASSPATH。然后我尝试使用和不使用 -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

【问题讨论】:

    标签: java mysql jdbc


    【解决方案1】:

    java 的参数顺序错误。将参数放在类名之后会将这些参数传递给类的主要方法,它不会设置类路径。

    您需要将参数放在类名之前。 -d class 也不是 java 的有效参数。总之,你需要使用:

    java -cp class:lib/* DBTest
    

    【讨论】:

    • 这给出了Error: Could not find or load main class DBTest。你能告诉我为什么会这样吗?之前它是如何找到类并执行到第 11 行的?
    • 这表明该类在当前文件夹中,您需要改用-cp .:lib/*,这可能意味着同样的问题也适用于javac 命令行(我不经常从命令行使用javac,但可能你需要使用javac -d class -cp lib/* src/*
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    相关资源
    最近更新 更多