2011-11-12 31 views
7

Tomcat 'java.lang.ClassNotFoundException:com.mysql.jdbc.Driver'の実行中にこのエラーが発生します。 Eclipse(Indigo、J2EE version)/ Maven(m2e-wtp)/ Tomcat 7.0の組み合わせを使用しています。私はこの依存関係を自分のWebアプリケーションのpomファイルに含めました(最初からビルドします)。java.lang.ClassNotFoundException:実行時のcom.mysql.jdbc.Driver(eclipse/maven/tomcat)

<dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.6</version> 
    </dependency> 

私は「問題」ビューにコンパイル・エラーを得ることはありませんが、私は「サーバー」ビューからTomcatサーバーを実行すると、私はこれらのエラーを取得します。これは明らかにTomcatがクラスを見つけることができず、クラスパスの設定エラーであることを示しています。私はこの問題をmavenが処理することを望んでいました。

「java.lang.ClassNotFoundException:com.mysql.jdbc.Driver」に関連する他の問題を見ましたが、あまり役に立ちませんでした。

私は非常に助けていただければ幸いです。

/**これは私がドライバをロードする方法です*/

static { 
     DriverAdapterCPDS cpds_Customer = new DriverAdapterCPDS(); 
     try {      cpds_Customer.setDriver(productConfig.getProperty("dbcp.connection.customer.driver_class")); 

     } catch (ClassNotFoundException e) { 
      // log.error("setDriver Exception " + e); 
      e.printStackTrace(); 
     } 
       } 
+1

Tomcatのlibフォルダにmysql connector jarファイルもコピーしましたか? – Tudor

+0

速い応答に感謝します。 WebContent/WEB-INF/libに必要なjarをコピーするか、それがどこに置かれたかによってmavenがすべてのjar依存関係を処理することを期待していたので、私は試していませんでした。私はそれを明示的に行うと思いますか?スレッドを更新しようとします。 – user977505

+0

Tudorとduffymoは、Webアプリケーションのlibディレクトリではなく、tomcatのlibディレクトリ($ CATALINA_HOME/lib)にドライバをコピーするよう提案しています。 – stivlo

答えて

18

のTomcat 7は、JDBCドライバのJARファイルが/ libディレクトリに行かなければならないことを要求するための:

http://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html

検索「忘れる」という言葉。

+0

pom.xmlのスコープはどうですか?デフォルトのコンパイルスコープは戦争でもそれをパッケージ化しますが、それは問題でしょうか? – stivlo

+0

jdniリソースルックアップを使用してデータソースを検索すると、それは尋ねられるケースではない可能性があります。そうでない場合、実際には悪いアドバイスであり、1つのwebappだけで必要とされるライブラリを持つグローバルなlibディレクトリを汚染し、展開されない場合は削除されないので、避けるべきです。 – soulcheck

+0

それは非常に重要でした。 Tomcatの他のバージョンで作業していて、私はこのバージョン(Tomcat 7.0)で見落としてしまったので、過去に明示的にコピーしていませんでした。また、pomのスコープを変更して、/ libディレクトリに明示的にコピーするのを避けるのに役立つかどうかを確認します。 – user977505

2

実際にドライバがwebappのWEB-INF/libディレクトリにコピーされ、wtp deploy dir(/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/のようなもの)にコピーされていることを確認してください。あなたのワークスペース)。

私はこの問題を非常に頻繁に遭遇するため、maven-wtpの統合は完璧よりも少し悪いと感じています。 java.lang.ClassNotFoundException:このエラーの

+0

どうすればいいですか? mysql connector jarの依存関係の範囲を変更するか手動でコピーするか? – user977505

+0

私はJNDIを使用していません。ドライバのロード方法について私の記事を更新しました。 – user977505

+0

私はそれを手作業でコピーして管理しました。多分もっと良い解決策があるかもしれません。もしそうなら、私はそれを知りたいと思うだろう。 – soulcheck

-1

はcom.mysql.jdbc.Driver

必要に "インポートはcom.mysql.jdbc.Driver;"アプリが実行されるまで使用されなくても

関連する問題