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


88

コードの何が問題になっているのか、デバッグ中に多くのエラーが発生します。データベースmysqlに接続するシングルトンクラスのコードを書いています。

これが私のコードです

package com.glomindz.mercuri.util;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;

public class MySingleTon {
    String url = "jdbc:mysql://localhost:3306/";
    String dbName = "test";
    String driver = "com.mysql.jdbc.Driver";
    String userName = "root";
    String password = "";

    private static MySingleTon myObj;   
    private Connection Con ;
    private MySingleTon() {
        System.out.println("Hello");
        Con= createConnection();
    }

    @SuppressWarnings("rawtypes")
    public Connection createConnection() {
        Connection connection = null;
        try {
            // Load the JDBC driver
            Class driver_class = Class.forName(driver);
            Driver driver = (Driver) driver_class.newInstance();
            DriverManager.registerDriver(driver);
            connection = DriverManager.getConnection(url + dbName);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        }
        return connection;
    }

    /**
     * Create a static method to get instance.
     */
    public static MySingleTon getInstance() {
        if (myObj == null) {
            myObj = new MySingleTon();
        }
        return myObj;
    }

    public static void main(String a[]) {
        MySingleTon st = MySingleTon.getInstance();
    }
}

私はJavaが初めてです。助けてください。


2
クラスパスにドライバjarがありますか?
NINCOMPOOP 2013

getInstance()で同期していることを確認してください
Siddharth 2013


1
実行時にエラーが発生する場合は、jarファイルをウェブサーバーのlibディレクトリに貼り付ける必要があります。一方、コンパイル時にエラーが発生する場合は、jarをビルドパスに追加します。
djangodude 2017年

回答:


124

mysql接続ライブラリがプロジェクトに含まれていないようです。提案された解決策の1つに従って問題を解決します。

  • MAVENプロジェクトソリューション

mysql-connector依存関係をpom.xmlプロジェクトファイルに追加します。

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

ここにすべてのバージョンがあります:https : //mvnrepository.com/artifact/mysql/mysql-connector-java

  • すべてのプロジェクトソリューション

jarライブラリーを手動でプロジェクトに追加します。

プロジェクトを右クリック->ビルドパス->ビルドパスを構成

Libraries Tab プレス Add External JarしてSelect、あなたのjarファイル。

mysql-connectorのzipはここにあります

  • 説明:

プロジェクトをビルドすると、mysql接続ライブラリからのファイル(com.mysql.jdbc.Driverクラス)が見つからないため、javaが例外をスローします。解決策は、ライブラリをプロジェクトに追加することであり、javaはcom.mysql.jdbc.Driverを見つけます。


7
IDEを使用せず、単にターミナルで実行している場合はどうなりますか?次に、この問題にどのように対処しますか?
Achyuta Aich

2
@Asadで提案されているように、mysql-connector-java-8.0.15.jarファイルをapache-tomcat-9.0.16\libフォルダに追加するまで問題は解決されません。
SWETA KESUR

53

IDEでエラーが発生した場合(コンパイル時エラー)、mysql-connector jarファイルをライブラリに追加し、これをプロジェクトの参照ライブラリにも追加する必要があります。

実行中にこのエラーが発生した場合は、おそらくmysql-connector JARファイルがWebサーバーのlibフォルダーに含まれていないことが原因です。

mysql-connector-java-5.1.25-bin.jarクラスパスとWebサーバーのlibディレクトリに追加します。Tomcat libパスは例として与えられていますTomcat 6.0\lib


1
IDEを使用せず、単にターミナルで実行している場合はどうなりますか?次に、この問題にどのように対処しますか?
Achyuta Aich

IDEを使用していない場合は、jarファイルパスをクラスパスに追加する必要があります
Asad

2
サーバー
ライブラリに


11

MySQL MySQL Connector Jarのドライバーjarをクラスパスに含める必要があります。

Eclipseを使用している場合: Eclipseで依存ライブラリーを追加する方法

コマンドラインを使用している場合は、javaの-cpパラメータを使用してドライバjarへのパスを含めます。

java -cp C:\lib\* Main

IDEを使用せず、単にターミナルで実行している場合はどうなりますか?次に、この問題にどのように対処しますか?
Achyuta Aich

1
Givesを使用すると-cp、メインクラスエラーを検出またはロードできませんでした。Mainクラスを別のフォルダに配置する必要がありますか?
zygimantus 2017


11

誰もが答えを書いていますが、誰も実際に最良の簡単な方法を使用して答えていないことに驚きます。
人々は、jarファイルを含めて答えます。ただし、エラーは引き続き発生します。

その理由は、プロジェクトの実行時にjarがデプロイされないためです。したがって、必要なのは、このjarもデプロイするようIDEに指示することです。

ここの人々は何度も答えて、そのjarファイルをWEB-INFのlibフォルダーに入れました。それは大丈夫に思われますが、なぜそれを手動で行うのですか?簡単な方法があります。以下の手順を確認してください。

ステップ1:プロジェクトでjarファイルを参照していない場合は、次のように参照します。

プロジェクトを右クリックして、プロジェクトのプロパティに移動します。次に、javaビルドパスに移動し、それを介して外部jarファイルを追加します。

しかし、ビルドパスを介して外部jarを追加してもクラスのコンパイルに役立つだけであり、プロジェクトの実行時にjarはデプロイされないため、これでも問題は解決しません。そのため、この手順に従ってください

プロジェクトを右クリックして、プロジェクトのプロパティに移動します。次に、Deployment Assemblyに移動してからAddを押し、次にjavaビルドパスエントリに移動して、ライブラリがjstl、mysql、またはその他のjarファイルであるかどうかにかかわらずライブラリを追加します。それらをデプロイメントに追加します。以下は、それを表示する2つの画像です。

追加する前に

追加後


ありがとう、相棒。うまくいきました。これはEclipseを使用した動的Webアプリケーションのみのソリューションであるためか、他の人がこれについて言及しなかった理由
Sayka

@saykaええ、そうかもしれません。
Tahir Hussain Mir

8

JDBC APIは、ほとんどの場合、データベースとは独立して機能するインターフェースで構成されています。JDBC APIを実装する各データベースには、データベース固有のドライバーが必要です。

最初に、www.mysql.comからMySQLコネクタjarをダウンロードし、次に:

Right Click the project -- > build path -- > configure build path

ライブラリタブでAdd External Jar、jarを押して選択します。


3

Mavenベースのプロジェクトの場合、依存関係が必要です。

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

2
なぜPostgreSQL?問題はMySQLについてです。
naXa

質問と一致するように回答を編集しました
tomtomssi

2

プロジェクトのフォルダーLibrariesに->右クリック-> Add Library-> Mysqlconnector 5.1


2

ドライバーコネクタがビルドパスにありません。ビルドパスを設定し、「mysql-connector-java-5.1.25-bin.jar」をポイントします(使用しているバージョンを確認してください)。または、maven:Dを使用できます。


1

私の場合、netbeansバージョンのmavenプロジェクト7.2.1は異なっていたように思われるかもしれません。プロジェクトには依存関係と呼ばれるフォルダがあります。右クリックすると、ポップアップウィンドウが表示され、パッケージを検索できます。クエリ領域に

mysql-connector

一致が表示されます(一部のリポジトリに対してこれを行うようです)。ダブルクリックしてインストールします。


1

これは、エラーのサブディレクトリの場所にWEB-INFフォルダーが存在しないためです。public_htmlの下のWEB-INFフォルダーを使用するようにアプリケーションをコンパイルするか、上記のエラーのようにサブフォルダーのWEB-INFフォルダーをコピーします。


1

IntelliJ Ideaの場合、プロジェクト構造(ファイル、プロジェクト構造)に移動し、mysqlコネクタ.jarファイルをグローバルライブラリに追加します。そこに到達したら、それを右クリックして「モジュールに追加」を選択します。[適用] / [OK]をクリックすると、問題ありません。


0

クラスパスが定義されていないため、例外が発生することもあります。

何時間もの調査と文字通り何百ものページを通過した後、問題はライブラリのクラスパスが定義されていないことでした。

Windowsマシンでクラスパスを次のように設定します

set classpath=path\to\your\jdbc\jar\file;.


0

tomcatを使用している場合は、プロジェクトディレクトリと共に、データベースコネクタのjarファイルもtomcat / libにコピーする必要があります。これは私のために働いた


0

2020年以降に使用する必要があります

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

0

私はEclipse IDEでSQLite Databaseを使用した単純なJavaFX11アプリケーションを開発しています。レポートを生成するために、Jasper jarを追加しました。突然「THIS」エラーがスローされます。

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

正常に動作していました(この追加前)。しかし、突然!

この単純なアプリケーションにMavenや他のマネージャーを使用していません。jarを手動で追加しています。

「ユーザーライブラリ」を作成し、外部フォルダーからjarファイルを追加しました。

問題が発生している領域: 「ユーザーライブラリ」がシステムライブラリとしてマークされています。マーキングを外したところです。現在はシステムライブラリではありません。「NOW MY PROJECT WORKING GOOD」。

DEBUG MYSELF:他のものを試しました: 試してみました:実行時の構成:ライブラリを削除し、jarを1つずつ追加してみてください。-ここでは、すべてのjarを1つずつ削除する必要があります。実行構成では、すべてを選択してEclipseで削除することはできません。そのため、エラーメッセージの変更によって、jarが別のjarに変更されます。

これが誰かを助けることを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.