非常によく似た質問があります 私の場合ですが、私の場合、ビルドパスに重複したjarファイルがないので、ソリューションは機能しません。 Googleを数時間検索してみましたが、そこで見つかった解決策で実際に問題が解決するものはありません。宿題用のデータベース接続を備えたWebサイトを作成しています。私はMySQLデータベースを使用し、Eclipseで開発し、Windows上で実行しています。
次のコードでJava.lang.ClassNotFoundException: com.mysql.jdbc.Driver
を取得し続けます:
import Java.sql.*;
//...
public void someMethodInMyServlet(PrintWriter out)
{
Connection connection = null;
PreparedStatement query = null;
try {
out.println("Create the driver instance.<br>");
Class.forName("com.mysql.jdbc.Driver").newInstance();
out.println("Get the connection.<br>");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "secret");
query = connection.prepareStatement( "SELECT * FROM customers");
//...
} catch (Exception e)
{
out.println(e.toString()+"<br>");
}
}
//...
上記のコードを実行すると、次の出力が得られます。
Create the driver instance.
Java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
Class.forName...
行を超えていないため、理由がわかりません!ここに私がやったことがあります:
C:\Program Files\MySQL\mysql-connector-Java-5.1.12\mysql-connector-Java-5.1.12-bin.jar
に配置します。mysql-connector-Java-5.1.12-bin.jar
を選択しました。サーブレットを使用しようとするたびに、jarが含まれているかどうかに関係なく、同じエラーが発生します。これを理解するのを手伝ってもらえますか?
Webappで使用されるJARファイルのフレーバーのすべての「サードパーティ」ライブラリについては、webappの/WEB-INF/lib
に物理JARファイルをコピー/ドロップするだけです。その後、webappのデフォルトクラスパスで利用可能になります。また、Eclipseはそのことに気付くほどスマートです。ビルドパスに煩わされる必要はありません。ただし、前に追加した不要な参照はすべて削除してください。削除しないと、衝突する可能性があります。
別の方法は、サーバー自身の/lib
フォルダーに物理JARファイルをドロップすることにより、サーバー自体にインストールすることです。これは、サーバーが提供するJDBC接続プールデータソースを使用している場合に必要です。これは、MySQL JDBCドライバーを必要とします。
servlet
で実行しているため、servlet containerでjarにアクセスできるようにする必要があります。コネクタをアプリケーションwar
の一部として含めるか、サーブレットコンテナの拡張ライブラリとデータソース管理(ある場合)の一部として配置します。 2番目の部分は、所有しているコンテナに完全に依存しています。
Mysql-connector-Java-5.1.6-bin.jarを\ Apache Tomcat 6.0.18\libフォルダーに配置します。あなたの問題は解決されます。
他の人は、ドライバーJARをサーブレットコンテナーで利用できるようにすることについて正しいです。私のコメントは、ドライバー自体に問題がないかどうかをコマンドラインから確認することを示唆するものでした。
空のmain()
ではなく、付属のドキュメントから修正した次のようなものを試してください。
public class LoadDriver {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
}
}
私のプラットフォームでは、これを行います:
$ ls mysql-connector-Java-5.1.12-bin.jar mysql-connector-Java-5.1.12-bin.jar $ javac LoadDriver.Java $ Java -cp mysql-connector-Java-5.1.12-bin.jar :. LoadDriver
プラットフォームでは、 here および hereで説明したように、;
をパス区切り文字として使用する必要があります 。
次の手順に従ってください。
1)Eclipseをインストールします
2)EclipseへのApacheのインポート
3)mysqlのインストール
4)mysqlconnector/Jのダウンロード
5)zipファイルを解凍し、binファイルを取得するまでファイルをナビゲートします。次に、binを含むフォルダーにあるすべてのファイルをC:\ Program Files\mysql\mysql server5.1 /に配置し、Eclipseでドライバーを定義するときにアドレスと同じパスを指定します。
それはすべて非常に簡単です。
OK、同じ問題を抱えた後、ここと他の場所でいくつかの答えを読んだ後。 external lib
をWEB-INF/lib
に入れることは、pollute webapp/JRE libs with server-specific libraries
としてあまり良い考えではないようです- 詳細については、この答えを確認してください
私が推奨しない別の解決策は、Tomcat/libフォルダーにコピーすることです。これは機能するかもしれませんが、共有(たとえばgit)プロジェクトの依存関係を管理するのは難しいでしょう。
vendor
フォルダーを作成します。すべての外部ライブラリをそこに置きます。次に、このフォルダーをプロジェクトへの依存関係としてマップします。 Eclipseでは、する必要があります
build path
に追加しますProject Properties
-> Java build path
Libraries
->外部ライブラリまたはその他のソリューションを追加して、ファイル/フォルダーを追加しますdeployment Assembly
( reference )に追加しますProject Properties
-> Deployment Assembly
Add
-> Java Build Path Entries
maven
(または任意の代替)を使用して、プロジェクトの依存関係を管理します
この問題に何度も直面しているうちに、ClassNotFoundExceptionが発生しました。 jarが物理的な場所にない場合。
WEB-INF libフォルダーの物理的な場所にある.jarファイル(mysqlコネクター)を確認してください。 cmdでshutdownコマンドを使用して、Tomcatを再起動してください。動作するはずです。
プロジェクトがMavenベースであると仮定して、POMに追加します。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-Java</artifactId>
<version>5.1.26</version>
</dependency>
保存>ビルド>接続をもう一度テストします。できます!実際のmysql Javaコネクタのバージョンは異なる場合があります。
私の問題は少し異なっていました。の代わりに jdbc:Oracle:thin:@server:port/service
私はserver:port/service
。
不足していたjdbc:Oracle:thin:@
in Global_mingResources.Resourceのurl
属性。しかし、私はTomcatの例外を見落としました
Java.sql.SQLException: Cannot create JDBC driver of class 'Oracle.jdbc.driver.OracleDriver' for connect URL 'server:port/service'
それでも問題が解決しない場合は、
-mysql-connector-Java-5.0.8-bin jarをTomcat-> lib-> folder内の場所に置きます(Tomcatをインストールした場所に関係なく)。環境変数を変更します([マイコンピューターのプロパティ]-[システムの詳細設定]-[環境変数]をクリックし、新しい変数名と変数値をlibファイルが存在する場所として設定します。パスの最後に;を入力することを忘れないでください) )
それでも問題が解決しない場合は、commons-collections-2.0.jar( http://www.docjar.com/jar_detail/commons-collections-2.0.jar.html )をダウンロードして、同じ場所にjarを貼り付けてください。 Tomcat-lib内のmysql jarが存在する場所(ie)。
プロジェクトのクリーンアップ-サーバーの停止-最後に実行してみてください。
私のために働いた唯一の解決策は、.jarファイルをWEB-INF/libの下に置くことです。これが役立つことを願っています。
Mysql-connector-Java-5.1.38-bin.jarをC:\ Program Files\Apache Software Foundation\Tomcat 7.0\libフォルダーに配置します。このプログラムを実行するには