Webアプリケーションの実行時にTomcatがMySQLドライバーをロードするように、いくつかの異なる方法を試しました。私はUbuntu8.04を使用しており、ライブラリはlibmysql-Javaパッケージから取得されます。これらは、以下に示すディレクトリにあります。
〜$ ls /usr/share/Java/mysql* /usr/share/Java/mysql-connector-Java-5.1.5.jar
私のCLASSPATHには次のファイルが含まれています。
〜$ echo $ CLASSPATH 。:/ usr/lib/jvm/Java-6-Sun/bin:/usr/local/Tomcat/lib/servlet-api.jar:/ usr/share/Java/mysql-connector-Java-5.1.5.jar
.jarファイルのコピーをWebアプリのWEB-INF/lib /ディレクトリに置きます。
/usr/local/Tomcat/webapps/ohms/WEB-INF/lib $ ls mysql-connector-Java-5.1.5.jar
これらの変更を行った後、Tomcatを再起動し、クラスを再コンパイルして、Tomcatを再起動します。また、_import Java.sql.*;
_を使用して必要なライブラリをインポートしています
ただし、行Class.forName("com.mysql.jdbc.Driver").newInstance();
を実行すると、まだ_Java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
_エラーが発生します。
私はここで何が間違っているのですか?
Tomcatは、WebアプリケーションのクラスローダーでCLASSPATHを使用しません。 common.loader
のconf/catalina.properties
行にパスとファイルを追加できます。 jarがWEB-INF/libにあるときに、クラスローダーはクラスを見つけているはずです。なぜそうではないのか説明できません。 5.5を使用している場合、Tomcat6を使用している場合はjarをcommon/libまたはlib /に配置できます。このパスは、より高いレベルのクラスローダーによってロードされるため、最初に取得する必要があります。
例外をスローしているのはあなたのアプリですか、それともTomcat自体ですか?
Class.forName()を使用しているので、Tomcat自体でもJNDI構成を行っていないのではないかと思いますが、とにかくこの可能性を捨てます。 JNDIの場合、Tomcatはドライバーも認識できる必要があり、アプリのWEB-INF/libディレクトリに配置されたJARを認識できません。ドライバーをTomcatの共通libディレクトリーに置くと、Tomcatはそれを見ることができ、アプリもそれを見ることができます。ディレクトリは、Davidが言及しているものです。