执行JAR时出现java.lang.ClassNotFoundException: com.mysql.jdbc.Driver错误

5

我正在尝试使用以下代码连接到本地MySQL服务器:

dbURL = "jdbc:mysql://localhost:3306:/" + dbname;
try{
    Class.forName("com.mysql.jdbc.Driver");
    try{
        con = DriverManager.getConnection(dbURL, dbuser, dbpass);
    } catch (SQLException ex){
        System.out.println("ERROR: Could not connection to SQL DB");
        con = null;
    }
} catch (ClassNotFoundException e){
    System.out.println("Error: ");
    e.printStackTrace();
}

我接着收到以下错误信息:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

我理解这意味着Java无法找到将Java环境与MySQL数据库连接的正确驱动程序。该程序在Windows 7系统上编译,然后移植到Ubuntu 11.04系统上。

有没有一种特定的方法可以运行Java程序,并使用特定的类路径,例如:

java -cp /usr/share/java/mysql-connector-java.jar program.jar

当我尝试时,那并没有起作用。

3个回答

5
在处理JAR文件时,-cp-classpath参数以及%CLASSPATH%环境变量将被忽略。相反,在JAR自身的/META-INF/MANIFEST.MF文件的Class-Path条目中必须指定类路径。它可以是相对于JAR本身的路径。例如,在同一文件夹中或在/lib子文件夹中。
下面的示例假设驱动程序与JAR文件处于同一文件夹中。
Class-Path: mysql-connector-java.jar

(确保 MANIFEST.MF 文件末尾有空行)

另请参阅:


4

安装Java的MySQL连接器

sudo apt-get install libmysql-java

设置classpath

export CLASSPATH=$CLASSPATH:/usr/share/java/mysql-connector-java.jar

Source: http://marksman.wordpress.com/2009/03/01/setting-up-mysqljdbc-driver-on-ubuntu/ 本文将教您如何在Ubuntu系统上设置MySQL JDBC驱动程序。首先,您需要下载适用于您的操作系统版本的驱动程序,并将其保存到本地系统中。然后,您需要将下载的JDBC驱动程序复制到Java默认库目录(/usr/lib/jvm/java-6-sun-1.6.0.13/jre/lib/ext)。接下来,您需要在CLASSPATH环境变量中添加与JDBC驱动程序相关的所有jar文件路径。最后,您需要重启Tomcat服务器以使更改生效。

0
无论在哪里编译,它都将在相同的JVM实现中平稳运行。
你所要做的就是在类路径中正确地包含一个JDBC驱动程序连接器。尝试将mysql-connector-java.jar放入与您的程序相同的目录中。
如果您解压缩此jar文件,其中是否包含com/mysql/jdbc/Driver.class?如果没有,请尝试从mysql网站下载jdbc驱动程序实现。

@Blackninja543,另外,从JDBC 4.0开始,无需加载驱动程序即可使用它。 JDBC规范第9.2.1节解释了兼容驱动程序现在支持服务提供程序机制的方式。如果您的jdbc jar文件包含具有驱动程序类的META-INF / services / java.sql.Driver文件,则意味着您无需加载驱动程序即可使用它。您只需要在类路径中即可。 - Edwin Dalorzo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接