2

我已将 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 的答案动态加载驱动程序时,问题就开始了。没有 IOException。但是在字符串上Class.forName(driver).newInstance()我有ClassNotFoundException例外。将 jar 添加到 jre 后,没有任何变化。那有什么问题?

4

2 回答 2

1

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

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

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

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

还可以在此处阅读有关命令行的类路径的更多信息。

于 2012-05-16T08:31:05.250 回答
0

如果你从命令行编译你的代码,请要求javac使用 mysql driver jar using -cpoption。像下面这样的东西应该工作:

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
于 2012-05-16T08:35:03.903 回答