¿Cómo resolver java.lang.ClassNotFoundException en Java?

ClassNotFoundException es una excepción comprobada y ocurre cuando la máquina virtual de Java (JVM) intenta cargar una clase en particular y la clase especificada no se puede encontrar en la ruta de clases.

En los viejos tiempos, no hay editores como Eclipse disponibles. Incluso en el Bloc de notas, la gente ha hecho codificación java y usando el comando » javac» para compilar los archivos java, y crearán un archivo ‘.class’. A veces, accidentalmente, los archivos de clase generados pueden perderse o configurarse en diferentes ubicaciones y, por lo tanto, hay muchas posibilidades de que ocurra una «Excepción ClassNotFound». Después de la existencia de editores como Eclipse, Netbeans, etc., IDE crea un tipo de archivo de entradas «ClassPath».

En la imagen de arriba, podemos ver que hay muchos archivos jar. Son absolutamente necesarios si el código Java quiere interactuar con MySQL, MongoDB, etc., tipo de bases de datos, y también algunas funcionalidades necesitan que estos archivos jar estén presentes en la ruta de compilación. Si no se agregan, los primeros editores muestran los errores y también brindan la opción de correcciones.

Implementación: programa de muestra para conectarse a la base de datos MySQL y obtener los contenidos

Ejemplo

Java

// Java Program to check for MySQL connectivity Issue
 
// Importing database (SQL) libraries
import java.sql.*;
 
// Main Class
public class MySQLConnectivityCheck {
 
    public static void main(String[] args)
    {
 
        // Display message for better readability
        System.out.println(
            "---------------------------------------------");
 
        // Initially setting connection object
        // and result set to null
        Connection con = null;
        ResultSet res = null;
 
        // Try block to check for exceptions
        try {
 
            // We need to have mysql-connector-java-8.0.22
            // or relevant jars in build path of project
 
            // Loading drivers
            // This driver is the latest one
            Class.forName("com.mysql.cj.jdbc.Driver");
 
            con = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/test?serverTimezone=UTC",
                "root", "");
 
            // Try block to check for exceptions
            try {
 
                // Set of statements to be checked
            }
 
            // Catch block 1
            catch (SQLException s) {
 
                // Display message when SQLException is
                // encountered
                System.out.println(
                    "SQL statement is not executed!");
            }
        }
 
        catch (Exception e) {
 
            // In case of general Exception
            // print and display the line number where the
            // exception occurred
            e.printStackTrace();
        }
        finally {
 
            // Finally for all cases indirectly closing the
            // connections & making the resultset and
            // connection object to null
            res = null;
            con = null;
        }
    }
}

Producción:

Caso 1: en el código anterior, estamos usando com.mysql.cj.jdbc.Driver y, en ese caso, si no tenemos mysql-connector-java-8.0.22.jar, obtendremos ClassNotFoundException.

 

Caso 2: Por lo tanto, mantenga el jar en la ruta de compilación como se muestra a continuación.

Nota: De manera similar, para cualquier conectividad de base de datos, necesitamos tener los jars respectivos para conectarnos a esa base de datos. La lista de archivos jar de controladores de bases de datos requeridos por java para superar ClassNotFoundException se proporciona a continuación en formato tabular 

Base de datos  Línea de comando
mysql mysql-conector-java-8.0.22.jar
MongoDB mongo-java-driver-3.12.7.jar
servidor SQL sqljdbc4.jar
MYSQL sqljdbc.jar
Oráculo oracle.jdbc.driver.oracledriver

Nota: 

  • Cuando estamos desarrollando aplicaciones basadas en Web, los archivos jar deben estar presentes en el ‘directorio WEB-INF/lib’.
  • En los proyectos de Maven, la dependencia de jar debe estar presente en pom.xml
  • Fragmento de muestra de pom.xml para arranque de primavera

Ejemplo 1 con bota Spring

XML

<!-- Spring boot mongodb dependency -->
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

Ejemplo 2 Sin fuelle de resorte

XML

<!-- https://mvnrepository.com/artifact/org.mongodb/mongodb-driver -->
<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver</artifactId>
    <version>3.6.3</version>
</dependency>

Ejemplo 3 Dependencias basadas en Gradle (MongoDB) 

XML

dependencies {
      compile 'org.mongodb:mongodb-driver:3.2.2'
  }

De manera similar, se pueden especificar otros controladores de base de datos de esta manera. Depende de la naturaleza del proyecto, las dependencias deben corregirse. Para proyectos de nivel de clase ordinarios, todas las clases, es decir, la clase principal, la clase secundaria, etc., deben estar disponibles en el classpath. Si hay errores, tampoco se creará el archivo .class, lo que conduce a ClassNotFoundException y, por lo tanto, para que todo el código funcione, primero se deben corregir los errores arreglando las dependencias. IDE es muy útil para superar tales escenarios de clasificación, como cuando el programa lanza ClassNotFoundException, proporcionará sugerencias a los usuarios sobre la necesidad de incluir archivos jar (que contienen funcionalidades necesarias como conectarse a la base de datos.

Publicación traducida automáticamente

Artículo escrito por priyarajtt y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *