HOWTO · Java

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

Este tutorial demuestra el error java.lang.classnotfoundexception: sun.jdbc.odbc.jdbcodbcdriver en Java.

Este tutorial demuestra el error java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver en Java.

Arreglar java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver en Java

Cuando usamos la base de datos de MS Access con Java, puede ocurrir el error java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver. Este error se debe a que Java 8 o JDK 1.8 no admiten el puente JDBC ODBC.

Entonces, si está utilizando Java 8 o JDK 1.8 o las versiones posteriores, es probable que ocurra el error java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver.

Hay dos soluciones para solucionar este error, una es revertir Java a 7 o JDK anterior a 1.8, y la segunda solución es utilizar los jar UCanAccess. Ambas soluciones se describen a continuación.

Volver a Java o JDK antes de las versiones 8 y 1.8

Para usar el puente JDBC ODBC, debe tener Java 7 o versiones anteriores porque solo se admiten estos controladores. Siga los pasos a continuación para volver a las versiones anteriores de Java o JDK.

Usando Eclipse:

  • Haga clic derecho en el proyecto y vaya a Propiedades.
  • Vaya a Compilador de Java.
  • Marque la casilla Habilitar configuración específica del proyecto.
  • Ahora seleccione una versión de JDK anterior a la 1.8 desde Nivel de cumplimiento del compilador.
  • Haga clic en Aplicar y cerrar. El JDK se revierte a la versión seleccionada.

Usando Windows o CMD:

  • Debe eliminar la versión anterior de Java e instalar la revertida.
  • Vaya al Panel de control y agregue o elimine programas.
  • Quitar Java.
  • Descargue Java 7 o anterior desde aquí.
  • Instale siguiendo el proceso de instalación.

Tras volver a versiones anteriores de Java, se solucionará el error java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver.

Usar tarros UCanAccess

Los jars UCanAccess se utilizan para realizar la conexión entre Java y la base de datos de Access. Siga el proceso a continuación para agregar archivos jar UCanAccess para resolver el error java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver.

  • Descargue los frascos UCanAccess desde aquí.
  • Agregue el jar a su ruta de compilación.
  • En el caso de Maven, se agregará la siguiente dependencia al archivo pom.xml.
<dependency>
    <groupId>net.sf.ucanaccess</groupId>
    <artifactId>ucanaccess</artifactId>
    <version>5.0.0</version>
</dependency>

Una vez que se agrega el jar UCanAccess a la ruta de compilación y se establece la dependencia de Maven, puede conectarse a la base de datos de MS Access; ver el ejemplo.

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();
    }
  }
}

El código anterior funcionará correctamente y se conectará a la base de datos de MS Access denominada Demo.accdb. Ver salida:

The Database is Connected successfully.

Otra cosa debe mencionarse aquí; si la base de datos es grande, también debemos mencionar los parámetros Xmx y Xms o establecer el parámetro de memoria en false; de lo contrario, arrojará el error. Establezca el parámetro de memoria en false, como se muestra a continuación.

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