Java 类路径找不到 MySQL 驱动程序

exx*_*us7 4 java mysql jdbc

每当我运行以下代码时:

import com.mysql.jdbc.Driver;

public void insertIntoMysql() {

    // Print out classloader information
    ClassLoader cl = ClassLoader.getSystemClassLoader();
    URL[] urls = ((URLClassLoader) cl).getURLs();
    String urlStr = "";
    for (int i=0; i < urls.length; i++) {
       urlStr += urls[i].getFile() + "\n";
    }
    System.out.println("Classpath:\n" + urlStr);

    // connect to mysql
    Class.forName("com.mysql.jdbc.Driver");
    String myUrl = "jdbc:mysql://localhost:3306/Compass";
    Connection conn = DriverManager.getConnection(myUrl, "root", "newpoint");

    ...
}
Run Code Online (Sandbox Code Playgroud)

我在 Class.forName 行收到“ClassNotFoundException: com.mysql.jdbc.Driver”错误。但是,我的类路径打印为:

Classpath: 
... 
/C:/myProjectDir/
Run Code Online (Sandbox Code Playgroud)

我的类路径中有以下 jar“/C:/myProjectDir/mysql-connector-java-5.0.8-bin.jar”。

我已经重新启动了程序,以防万一程序启动时 ClassLoader 正在加载所有内容,但我不断收到该错误。

有什么想法吗?

azu*_*rog 5

目前看起来你的类路径上只有你的项目目录,而不是 mysql-connector-java-5.0.8-bin.jar 文件本身。

在 Java 中,在类路径中包含的内容的规则如下:

  • 对于未命名包中的类文件,您包括包含类文件的目录
  • 对于命名包中的类文件,您包括包含根包的目录,这是完整包名称中的第一个包
  • 对于包含类文件的 JAR 或 zip 文件,您需要包含 zip 或 JAR 文件的名称

要获取 mysql 驱动程序,您需要按名称将驱动程序 jar 添加到类路径:

Classpath: 
... 
/C:/myProjectDir/
/C:/myProjectDir/mysql-connector-java-5.0.8-bin.jar
... 
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请查看有关 PATH 和 CLASSPATHJava 教程以及有关设置类路径的 Oracle 文档。