HOWTO · Java

Java.Lang.ClassNotFoundeException: Sun.Jdbc.Odbc.JdbcOdbcDriver

このチュートリアルでは、Java での java.lang.classnotfoundexception: sun.jdbc.odbc.jdbcodbcdriver エラーについて説明します。

このページの内容

このチュートリアルでは、Java の java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver エラーについて説明します。

Java の java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver を修正

MS Access データベースを Java で使用すると、エラー java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver が発生することがあります。 このエラーは、Java 8 または JDK 1.8 が JDBC ODBC ブリッジをサポートしていないために発生します。

そのため、Java 8 または JDK 1.8 またはそれ以降のバージョンを使用している場合、エラー java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver が発生する可能性があります。

このエラーを解決するには 2つの解決策があります。1つは Java を 7 または 1.8 より前の JDK に戻すことで、もう 1つは UCanAccess jar を使用することです。 両方のソリューションについて以下に説明します。

バージョン 8 および 1.8 より前の Java または JDK に戻す

JDBC ODBC ブリッジを使用するには、これらのドライバーのみがサポートされているため、Java 7 またはそれ以前のバージョンが必要です。 以下の手順に従って、以前のバージョンの Java または JDK に戻します。

Eclipse の使用:

  • プロジェクトを右クリックし、プロパティに移動します。
  • Java コンパイラ に移動します。
  • プロジェクト固有の設定を有効にする ボックスをチェックします。
  • ここで、コンパイラ準拠レベルから 1.8 より前のバージョンの JDK を選択します。
  • 適用して閉じるをクリックします。 JDK が選択したバージョンに戻されます。

Windows または CMD の使用:

  • 以前の Java バージョンを削除し、元に戻したものをインストールする必要があります。
  • コントロール パネル に移動し、プログラムを追加または削除します。
  • Java を削除します。
  • こちら から Java 7 以前をダウンロードします。
  • インストールプロセスに従ってインストールします。

以前のバージョンの Java に戻すと、エラー java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver が解決されます。

UCanAccess Jar を使用する

UCanAccess jar は、Java と Access データベース間の接続を確立するために使用されます。 以下のプロセスに従って、UCanAccess jar を追加して java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver エラーを解決します。

  • ここ から UCanAccess jar をダウンロードします。
  • jar をビルド パスに追加します。
  • Maven の場合、次の依存関係が pom.xml ファイルに追加されます。
<dependency>
    <groupId>net.sf.ucanaccess</groupId>
    <artifactId>ucanaccess</artifactId>
    <version>5.0.0</version>
</dependency>

UCanAccess jar がビルド パスに追加され、Maven 依存関係が設定されると、MS Access データベースに接続できます。 例を参照してください。

package delftstack;

import java.sql.Connection;
import java.sql.DriverManager;

public class Example {
  public static void main(String args[]) {
    String Database_URL = "jdbc:ucanaccess://C:\\Users\\Sheeraz\\Databases\\Demo.accdb";

    try {
      // making connection
      Connection Database_Connection = DriverManager.getConnection(Database_URL);

      if (Database_Connection != null) {
        System.out.println("The Database is Connected successfully.");
        Database_Connection.close();
      }

    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

上記のコードは正しく機能し、Demo.accdb という名前の MS Access データベースに接続します。 出力を参照してください:

The Database is Connected successfully.

ここでもう1つ言及する必要があります。 データベースが大きい場合は、Xmx および Xms パラメータについて言及するか、メモリ パラメータを false に設定する必要があります。 そうしないと、エラーがスローされます。 以下に示すように、メモリ パラメータを false に設定します。

String Database_URL = "jdbc:ucanaccess://C:\\Users\\Sheeraz\\Databases\\Demo.accdb";memory=false";