2

テストサーブレットからのドライバのロードに問題があります。エラーは単に

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

tomcatを介してサーブレットを実行します-localhost:8080ページがブラウザに表示されているため、問題なく実行されています。サーブレットは、MySQLワークベンチで実行されているデータベースに接続しようとしています。

ドライバをロードしようとするサーブレットクラス内のコード:

        String driver = "com.mysql.jdbc.Driver";    
        Class.forName(driver).newInstance();
        // Make db connection
        con = DriverManager.getConnection(url, USERNAME, PASSWORD);   
        st  = con.createStatement();

システム変数は次のように設定されます。

JAVA_HOME:C:\ Program Files \ Java \ jdk1.7.0_02 \

クラスパス:C:\ apache-tomcat-6.0.35 \ lib \ servlet-api.jar; C:\ ProgramFiles \ Java \ jre7 \ lib \ mysql-connector-java-5.1.22-bin;

パス:C:\ Program Files \ Java \ jdk1.7.0_02 \ bin

今、私が見る限り、すべてが正しくセットアップされているように見えます。私はこれをトラブルシューティングする他の方法についてはかなり無知なので、問題を引き起こしている可能性があるものについての入力をいただければ幸いです。

どうもありがとう。

4

3 に答える 3

2

環境変数は、コマンド コンソールのコマンドとコマンドCLASSPATHによってのみ使用され、その場合でも、または引数を使用しない場合にのみ使用されます。Tomcat にデプロイされた Web アプリケーションの実行時には使用されません。javajavac-cp-classpath-jar

代わりに、webapp のデフォルトのクラスパスが/WEB-INF/libフォルダーをカバーします。そこに JDBC ドライバーの JAR(!) ファイルを確実にドロップする必要があります (サーブレット API JAR ファイルではありません!)。

また、任意の JAR ファイルをJRE のフォルダ/libまたはフォルダにドロップしないでください。JRE のフォルダーに/lib/extJDBC ドライバー JAR ファイルがない環境では実行されないため、(Web) アプリケーションは移植できなくなります。/libWeb アプリケーションの場合、Web アプリケーションの/WEB-INF/lib一部として配布できるように、フォルダーに配置する必要があります。


具体的な問題とは関係ありませんが、newInstance()呼び出しは MySQL JDBC ドライバーでは不要です。それに関連するバグがある古い MM ドライバーでのみ必要です。「Class.forName()」と「Class.forName().newInstance()」の違いは何ですか?も参照してください。

于 2013-01-12T17:47:06.423 に答える
1

クラスパスのこの部分は奇妙です:

C:\ProgramFiles\Java\jre7\lib\mysql-connector-java-5.1.22-bin

jarここにドライバークラスを含むファイルがいくつかあると予想していました。

于 2013-01-12T17:47:43.023 に答える
0

MySql ドライバーのクラスパスが間違っているようです:

次のようにする必要があります。

/path/mysql-connector-java-ver-bin.jar

より詳しい情報

于 2013-01-12T17:49:06.630 に答える