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

Sheeraz Gul 2023年10月12日
Java.Lang.ClassNotFoundeException: 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";
著者: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

関連記事 - Java Exception