【问题标题】:Java classpath cannot find MySQL driverJava 类路径找不到 MySQL 驱动程序
【发布时间】:2015-03-25 18:20:46
【问题描述】:

每当我运行以下代码时:

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");

    ...
}

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

Classpath: 
... 
/C:/myProjectDir/

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

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

有什么想法吗?

【问题讨论】:

  • 你打印的classpath的sn-p在classpath上有c:/myProjectDir不是 c:/myProjectDir/mysql-connector-java-5.0.8-bin.jar。您确定在类路径中有 jar,而不仅仅是目录吗?
  • 我可能只有目录...我没有专门的 jar。猜猜我认为它会被加载,因为它在那个目录中,但我需要明确地包含 jar 本身?
  • 正确。我会将我的评论扩展为答案。

标签: java mysql jdbc


【解决方案1】:

目前,您的类路径中似乎只有项目目录,而不是 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
... 

有关更多信息,请查看Java tutorial on PATH and CLASSPATHSetting the Class Path 上的 Oracle 文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-23
    • 2018-08-14
    • 2017-11-09
    • 2016-07-14
    • 2019-01-17
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多