24

私と非常によく似た質問がありますが、私の場合、ビルドパスに重複するjarがないため、ソリューションは機能しません。私は今グーグルを数時間検索しました、しかしそこで私が見つけた解決策のどれも実際に私の問題を解決しません。宿題用のデータベース接続を備えた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...それは一線を越えず、理由がわかりません!これが私がしたことです:

  1. mysql-connectorをダウンロードします。
  2. MySQLフォルダに入れてくださいC:\Program Files\MySQL\mysql-connector-java-5.1.12\mysql-connector-java-5.1.12-bin.jar
  3. Eclipseでプロジェクトのプロパティを開きました。
  4. ビルドパスに外部Jarを追加し、を選択しmysql-connector-java-5.1.12-bin.jarました。

サーブレットを使用しようとするたびに、そこにjarがあるかどうかに関係なく、同じエラーが発生します。これを理解するのを手伝ってくれませんか。

4

13 に答える 13

56

Webアプリケーションで使用されるJARファイルのフレーバーのすべての「サードパーティ」ライブラリについては、Webアプリケーションの物理JARファイルをコピー/ドロップするだけ/WEB-INF/libです。その後、webappのデフォルトのクラスパスで使用できるようになります。また、Eclipseはそれに気付くほど賢いです。buildpathに煩わされる必要はありません。ただし、前に追加した不要な参照をすべて削除してください。削除すると、衝突する可能性があります。

/lib別の方法は、サーバー自体のフォルダーに物理JARファイルをドロップしてサーバー自体にインストールすることです。これは、サーバー提供のJDBC接続プールデータソースを使用している場合に必要です。このデータソースには、MySQLJDBCドライバーが必要です。

参照:

于 2010-03-01T00:06:11.380 に答える
4

で実行しているため、サーブレットコンテナservletからjarにアクセスできるようにする必要があります。コネクタをアプリケーションの一部として含めるか、サーブレットコンテナの拡張ライブラリおよびデータソース管理のもの(存在する場合)の一部として配置します。2番目の部分は完全にあなたが持っているコンテナに依存しています。war

于 2010-02-28T23:41:53.007 に答える
3

他の人は、ドライバー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-cpmysql-connector-java-5.1.12-bin.jar:。LoadDriver

プラットフォームでは、ここここで;説明されているように、パス区切り文字として使用する必要があります。

于 2010-03-01T01:02:23.203 に答える
3

mysql-connector-java-5.1.6-bin.jarを\ApacheTomcat 6.0.18\libフォルダーに配置します。あなたの問題は解決されます。

于 2010-12-29T12:16:39.830 に答える
2

すべきでないこと(特に共有プロジェクトで作業している場合)

わかりました、同じ問題が発生した後、ここや他の場所でいくつかの回答を読んだ後。入れるのはそれほど良い考えではないようexternal libですWEB-INF/libpollute webapp/JRE libs with server-specific libraries詳細 については、この回答を確認してください。」

私がお勧めしない別の解決策は、tomcat/libフォルダーにコピーすることです。これは機能するかもしれませんが、共有(たとえばgit)プロジェクトの依存関係を管理するのは難しいでしょう。

良い解決策1

フォルダを作成しvendorます。そこにすべての外部ライブラリを配置します。次に、このフォルダーを依存関係としてプロジェクトにマップします。日食ではあなたがする必要があります

  1. フォルダをに追加しますbuild path
    1. Project Properties->Java build path
    2. Libraries->ファイル/フォルダを追加するための外部ライブラリまたはその他のソリューションを追加します
  2. deployment Assemblyビルドパスを(参照) に追加します
    1. Project Properties->Deployment Assembly
    2. Add->Java Build Path Entries
    3. これで、完成したWARに含めるために指定できるビルドパス上のライブラリのリストが表示されます。
    4. 必要なものを選択して、[完了]をクリックします。

良い解決策2

mavenプロジェクトの依存関係を管理するために(または他の方法で)使用する

于 2015-02-16T08:15:16.640 に答える
1

次の手順に従ってください。

1)eclipseをインストールします
。2)Apacheをeclipseにインポートし
ます。3)mysqlをインストールします
。4)mysqlconnector / Jをダウンロードします。5
)zipファイルを解凍し、binファイルを取得するまでナビゲートします。次に、binを含むフォルダーに存在するすべてのファイルをC:\ Program Files \ mysql \ mysql server5.1 /に配置し、eclipseでドライバーを定義するときにアドレスと同じパスを指定します。

それはすべて非常に簡単な人です。

于 2012-03-10T10:21:35.620 に答える
0

それでも問題が解決しない場合は、

-mysql-connector-java-5.0.8-binjarをTomcat->lib->フォルダー内の場所に配置します(Tomcatをインストールした場所に関係なく)。そして、環境変数を変更します([マイコンピューターのプロパティ]-[システムの詳細設定]-[環境変数]をクリックして実行します-libファイルが存在する場所として新しい変数名と変数値を設定します。パスの最後に;を入力することを忘れないでください)。 )。

それでも問題が解決しない場合は、commons-collections-2.0.jar(http://www.docjar.com/jar_detail/commons-collections-2.0.jar.html)をダウンロードして、mysql jarが存在するのと同じ場所にjarを貼り付けてみてください(すなわち)Tomcat-lib内。

プロジェクトをクリーンアップします-サーバーを停止します-最後に実行してみます。

于 2012-05-07T04:33:56.793 に答える
0

私は何度もこの問題に直面しており、ClassNotFoundExceptionを経験しています。jarが物理的な場所にない場合。

したがって、WEB-INF libフォルダーの物理的な場所に.jarファイル(mysqlコネクター)があることを確認してください。cmdでshutdownコマンドを使用してTomcatを再起動してください。動作するはずです。

于 2012-10-30T03:49:27.157 に答える
0

私のために働いた唯一の解決策は、.jarファイルをWEB-INF/libの下に置くことです。これがお役に立てば幸いです。

于 2012-11-13T12:47:41.600 に答える
0

プロジェクトがMavenベースであると仮定して、それをPOMに追加します。

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

保存>ビルド>そして接続を再度テストします。できます!実際のmysqljavaコネクタのバージョンは異なる場合があります。

于 2013-10-04T19:33:46.640 に答える
0

mysql-connector-java-5.1.38-bin.jarをC:\ Program Files \ Apache Software Foundation \ Tomcat 7.0\libフォルダーに配置します。このプログラムを実行して実行します。

于 2016-03-15T07:32:14.857 に答える
0

私の問題は少し異なっていました。jdbc:oracle:thin:@server:port/service私の代わりにそれを持っていましたserver:port/service

GlobalNamingResources.Resourceの属性に欠落がjdbc:oracle:thin:@ありました。urlしかし、私はTomcatの例外を見落としていました

java.sql.SQLException: Cannot create JDBC driver of class 'oracle.jdbc.driver.OracleDriver' for connect URL 'server:port/service'
于 2019-01-09T20:02:56.410 に答える
-2

このエラーの場合:

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

必要がある:

Import java.sql.*;
Import com.mysql.jdbc.Driver;

アプリが実行されるまで使用されない場合でも。

于 2013-03-20T16:30:43.373 に答える