web-dev-qa-db-ja.com

ランタイムエラー:Java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

私はmysqlとjdbcを初めて使用しますが、このタイトルでエラーが発生します。私は一日中検索していて、自分に合った解決策を見つけることができません。

私が試したこと:mysqlをアンインストール/再インストールし、mysql-connector-Java-5.1.25-bin.jarとojdbc7.jarをコピーして、実行しようとしている.classファイルと同じ場所に貼り付け、プログラムを別のディレクトリに再構築します。 、そしておそらく他のいくつかのこと。

コーディングにはnotepad ++を使用し、コンパイルと実行にはWindowsコマンドプロンプトを使用しています。それはうまくコンパイルされますが、私はで実行しようとします

C:\ Projects\bin> Java-cp。 ClientBase

出力は次のとおりです。

Java.lang.ClassnNotFoundException:com.mysql.jdbc.Driver

java.net.URLClassloader $ 1.run(URLClassLoader.Java:336)で
Java.net.URLClassLoader $ 1.run(URLClassLoader.Java:355)
Java.security.AccessController.doPrivileged(ネイティブメソッド)で
Java.net.URLClassLoader.findClass(URLClassLoader.Java:354)で
Java.lang.ClassLoader.loadClass(ClassLoader.Java:432)で
Sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.Java:308)
Java.lang.ClassLoader.loadClass(ClassLoader.Java:356)で
Java.lang.Class.forName0(ネイティブメソッド)
Java.lang.Class.forName(Class.Java:188)で
ClientBase.main(ClientBase.Java:21)
さようなら。

// import packages
import Java.sql.*;

// create class ClientBase
public class ClientBase{
            // JDBC driver name and database URL
            static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";                
            static final String DB_URL = "jdbc:mysql://localhost/CLIENTBASE";          



 // Database credentials
    static final String USER = "root";
    static final String PASS = "";

// Begin method main
public static void main(String[] args) {
    Connection conn = null;
    Statement stmt = null;

    try{
        // register JDBC driver
        Class.forName("com.mysql.jdbc.Driver");

        // Open connection
        System.out.println("Connecting to database...");
        conn = DriverManager.getConnection(DB_URL, USER, PASS);

        // Execute a query
        System.out.println("Creating statement...");
        stmt = conn.createStatement();
        String sql;
        sql = "SELECT id, name, address, address 2, city, phone, state, Zip, fax FROM CLIENTBASE";
        ResultSet rs = stmt.executeQuery(sql);

        // Extract data from result set
        while(rs.next()){
            // Retrieve by column name
            int id = rs.getInt("id");
            String name = rs.getString("name");
            String address = rs.getString("address");
            String address2 = rs.getString("address2");
            String city = rs.getString("city");
            String phone = rs.getString("phone");
            String state = rs.getString("state");
            String Zip = rs.getString("Zip");
            String fax = rs.getString("fax");

            // Display values
            System.out.print("ID: " + id);
            System.out.print(" Name: " + name);
            System.out.println("Address:" + address);
            System.out.println(address2);
            System.out.print("City:" + city);
            System.out.print(" State: " + state);
            System.out.println(" Zip: " + Zip);
            System.out.print("Phone: " + phone);
            System.out.println(" Fax: " + fax);
        } // end while

        // clean up
        rs.close();
        stmt.close();
        conn.close();
    }catch(SQLException se){
        // Handle errors for JDBC
        se.printStackTrace();
    }catch(Exception e){
        // Handle errors for Class.forName
        e.printStackTrace();
    }finally{
        // finally block used to close resources
        try{
            if(stmt!=null)
                stmt.close();
        }catch(SQLException se){
            se.printStackTrace();
        } // end finally
    } // end try
System.out.println("Goodbye.");
} // End method main
} // end class ClientBase

また、このコードのオンラインチュートリアルを終了する予定です。私が彼らのものと少し違うものを作ることに決めたので、それは彼らがそれを持っている方法とは正確には異なりますが、それは一般的に同じです。エラーが何であるかからは、コードの問題ではないと思います。

どんな助けでもいただければ幸いです!私はおかしくなりそうだ!

4
user2669813

ランタイムクラスパスにコネクタライブラリを追加する必要があります。

Java -cp .;mysql-connector-Java-5.1.25-bin.jar ClientBase

私の例では、Windowsクラスパスセパレーターを使用しています";"、他のシステムでは異なる場合があります(":" Linux/Macの場合)。また、mysql-connector-Java-5.1.25-bin.jarは同じフォルダにあります。そうでない場合は、プレーン名の代わりにライブラリへのパスを配置します。

ClientBaseはJavaクラスファイル名はここにあります

c:\>javac Test.Java
c:\>Java -cp .;F:\CK\JavaTest\JDBCTutorial\mysql-connector-Java-5.1.18-bin Test
11
Jk1

netbeansを使用する場合は、次の手順を実行します。1.Netbeansを開くIDE 2。プロジェクトを右クリックします。3。プロパティを選択します。4。左側で[ライブラリ]をクリックします。5。[コンパイル]の下「タブ-「Jar /フォルダの追加」ボタンをクリックします。6。ダウンロードした「mysql-connector-Java-5.1.25-bin.jar」ファイルを選択します(dev.mysql.comからConnector/Jをダウンロードします)。7。「OK」をクリックします。 。その仕事。

2
prabhakaran

I was also get same problem :-
Linuxシステムの解決方法。

1。)ファイルをダウンロード mysql-connector-Java-5.1.18-bin.jar 指定されたリンクまたはその他から。

2。)次に、クラスまたはファイルの同じフォルダーまたはディレクトリ(接続を表示する場所)に貼り付けます。

3。)ここで、Linuxコマンドプロンプトで次のコマンドを使用します。

Java -cp .:mysql-connector-Java-5.1.18-bin.jar YourFileName

それはあなたがする必要があるすべてです... :)

1
HaRsH

追加 mysql.connector-Java-x.x.x-bin.jarライブラリフォルダに移動します。何もインポートする必要はありません。良いものを持っている。

1
agcala

何をインポートしましたか?ドキュメントから: http://dev.mysql.com/doc/connector-j/en/connector-j-usagenotes-connect-drivermanager.html

import Java.sql.Connection;
import Java.sql.DriverManager;
import Java.sql.SQLException;
// Notice, do not import com.mysql.jdbc.*
// or you will have problems!

コメント:

なぜnotepad ++を使用しているのですか? IDE(Eclipse/Netbeans/IntelliJ)をインストールします-そのような問題を見つけるのははるかに簡単です(たとえば、含まれていないjarファイル)

0
alfasin

Swingを使用している場合は、 my-sql-connect の外部jarを追加する必要があります。

それ以外の場合、jsp servletを使用している場合は、外部jarを追加し、そのjarをWEB_INF/libプロジェクトフォルダーにコピーする必要があります。

0
Bhola