java.lang.ClassNotFoundException:com.mysql.jdbc.Driver(在jre的libs中)

时间:2012-05-15 14:26:05

标签: java mysql jdbc driver

我已将mysql-connector-java-5.1.18-bin.jar添加到jre和jdk库中。这是:

C:\Windows\system32>javap java.io.Bits
    Compiled from "Bits.java"
    class java.io.Bits extends java.lang.Object{
        java.io.Bits();
        static boolean getBoolean(byte[], int);
        static char getChar(byte[], int);
        static short getShort(byte[], int);
        static int getInt(byte[], int);
        static float getFloat(byte[], int);
        static long getLong(byte[], int);
        static double getDouble(byte[], int);
        static void putBoolean(byte[], int, boolean);
        static void putChar(byte[], int, char);
        static void putShort(byte[], int, short);
        static void putInt(byte[], int, int);
        static void putFloat(byte[], int, float);
        static void putLong(byte[], int, long);
        static void putDouble(byte[], int, double);
    }


    C:\Windows\system32>javap com.mysql.jdbc.Driver
    ERROR:Could not find com.mysql.jdbc.Driver

但是当我向同一个文件显示一个直接的类路径时,它没问题。

C:\Windows\system32>javap -classpath "B:\Java\Tools\mysql-connector-java-5.1.18\
mysql-connector-java-5.1.18\mysql-connector-java-5.1.18-bin.jar" com.mysql.jdbc.
Driver
Compiled from "Driver.java"
public class com.mysql.jdbc.Driver extends com.mysql.jdbc.NonRegisteringDriver i
mplements java.sql.Driver{
    public com.mysql.jdbc.Driver()       throws java.sql.SQLException;
    static {};
}

当我使用Thilo's answer动态加载驱动程序时,问题就出现了。没有IOException。但是在字符串Class.forName(driver).newInstance()上我有ClassNotFoundException例外。将jar添加到jre之后,没有任何改变。这有什么问题?

2 个答案:

答案 0 :(得分:1)

将jar添加到jre 之后你的意思是什么?我担心mysql-connector-java-5.1.18-bin.jar未正确添加到类路径中。只有在可搜索的类路径中不存在该类时,才会抛出ClassNotFoundException。 JDK附带的所有jar都是bootstrap类,可供java加载。但是,所有第三方类都需要在可搜索的系统或应用程序级别类路径中设置,以便java可以加载指定的类参数。

在命令提示符处尝试以下命令并执行java类。

set mysqljar="absolute-path-to\mysql-connector-java-5.1.18-bin.jar"  
set classpath=%classpath%;.;%mysqljar%

只要这个jar在可搜索的类路径中可用,所有类加载器都可以从jar中找到并加载类。尝试这个更改并运行Thilo的示例,它应该正常工作。

read more on class paths, for command line, here

答案 1 :(得分:0)

如果您是从命令行编译代码,请让javac使用-cp选项使用mysql驱动程序jar。像下面这样的东西应该有效:

C:\MyProject>javac -cp "B:\Java\Tools\mysql-connector-java-5.1.18\mysql-connector-java-5.1.18\mysql-connector-java-5.1.18-bin.jar" MyClass.java