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