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例外があります。jreにjarを追加した後、何も変わっていません。それの何が問題なのですか?

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 ドライバー jar を使用するように依頼してください-cp。次のようなものが機能するはずです。

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 に答える