web-dev-qa-db-ja.com

Java.lang.ClassNotFoundexceptionに直面せずにEclipse WebプロジェクトにJDBCドライバーをインストールする方法

非常によく似た質問があります 私の場合ですが、私の場合、ビルドパスに重複した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...行を超えていないため、理由がわかりません!ここに私がやったことがあります:

  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が含まれているかどうかに関係なく、同じエラーが発生します。これを理解するのを手伝ってもらえますか?

22
Kiril

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

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

こちらもご覧ください:

53
BalusC

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

4
DJ.

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

3
Satya

他の人は、ドライバー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で説明したように、;をパス区切り文字として使用する必要があります

3
trashgod

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

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

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

1
Rajat

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

OK、同じ問題を抱えた後、ここと他の場所でいくつかの答えを読んだ後。 external libWEB-INF/libに入れることは、pollute webapp/JRE libs with server-specific librariesとしてあまり良い考えではないようです- 詳細については、この答えを確認してください

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

良い解決策1

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

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

良い解決策2

maven(または任意の代替)を使用して、プロジェクトの依存関係を管理します

1
oak

この問題に何度も直面しているうちに、ClassNotFoundExceptionが発生しました。 jarが物理的な場所にない場合。

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

0
agiles

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

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

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

0
Kingz

私の問題は少し異なっていました。の代わりに 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'
0
Anand Rockzz

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

-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)。

プロジェクトのクリーンアップ-サーバーの停止-最後に実行してみてください。

0
Praveen

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

0
karthik339

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

0
Rutvik patel