java.lang.ClassNotFoundException: com.mysql.jdbc.Driver en Eclipse

89

¿Qué está mal con el código? Hay muchos errores durante la depuración. Estoy escribiendo un código para que una clase singleton se conecte con la base de datos mysql.

Aqui esta mi codigo

package com.glomindz.mercuri.util;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;

public class MySingleTon {
    String url = "jdbc:mysql://localhost:3306/";
    String dbName = "test";
    String driver = "com.mysql.jdbc.Driver";
    String userName = "root";
    String password = "";

    private static MySingleTon myObj;   
    private Connection Con ;
    private MySingleTon() {
        System.out.println("Hello");
        Con= createConnection();
    }

    @SuppressWarnings("rawtypes")
    public Connection createConnection() {
        Connection connection = null;
        try {
            // Load the JDBC driver
            Class driver_class = Class.forName(driver);
            Driver driver = (Driver) driver_class.newInstance();
            DriverManager.registerDriver(driver);
            connection = DriverManager.getConnection(url + dbName);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        }
        return connection;
    }

    /**
     * Create a static method to get instance.
     */
    public static MySingleTon getInstance() {
        if (myObj == null) {
            myObj = new MySingleTon();
        }
        return myObj;
    }

    public static void main(String a[]) {
        MySingleTon st = MySingleTon.getInstance();
    }
}

Soy nuevo en Java. Por favor ayuda.

atikul hussain
fuente
2
¿Está el controlador jar en su classpath?
NINCOMPOOP
asegúrese de haber sincronizado en su getInstance ()
Siddharth
Posible duplicado de ClassNotFoundException com.mysql.jdbc.Driver
pathikrit
1
Debe pegar el archivo jar en el directorio lib de su servidor web, si obtiene el error en tiempo de ejecución. mientras que, si obtiene el error en tiempo de compilación, agregue el jar en la ruta de compilación.
djangodude

Respuestas:

124

Parece que la biblioteca de conectividad mysql no está incluida en el proyecto. Resuelva el problema siguiendo una de las soluciones propuestas:

  • SOLUCIÓN DE PROYECTOS MAVEN

Agregue la dependencia del conector mysql al archivo de proyecto pom.xml:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.39</version>
</dependency>

Aquí tienes todas las versiones: https://mvnrepository.com/artifact/mysql/mysql-connector-java

  • SOLUCIÓN PARA TODOS LOS PROYECTOS

Agregue la biblioteca jar manualmente al proyecto.

Haga clic derecho en el proyecto -> ruta de construcción -> configurar ruta de construcción

En Libraries Tab prensa Add External Jar y Selecttu tarro.

Puede encontrar zip para mysql-connector aquí

  • Explicación:

Al compilar el proyecto, java lanza una excepción porque no se encuentra un archivo (la clase com.mysql.jdbc.Driver) de la biblioteca de conectividad mysql. La solución es agregar la biblioteca al proyecto, y Java encontrará el com.mysql.jdbc.Driver

R9J
fuente
7
¿Qué pasa si no estamos usando ningún IDE y simplemente lo estamos ejecutando en nuestro terminal? Entonces, ¿cómo lidiar con este problema?
Achyuta Aich
2
El problema no se resolverá hasta que agregue el mysql-connector-java-8.0.15.jararchivo a la apache-tomcat-9.0.16\libcarpeta, como lo sugiere @Asad.
SWETA KESUR
53

Si obtuvo el error en su IDE (error en tiempo de compilación), debe agregar su archivo jar del conector mysql a sus bibliotecas y agregarlo también a su biblioteca de proyecto referenciada.

Si recibe este error cuando lo está ejecutando, probablemente sea porque no ha incluido el archivo JAR del conector mysql en la carpeta lib de su servidor web.

Agregue mysql-connector-java-5.1.25-bin.jara su classpath y también al directorio lib de su servidor web. La ruta de acceso de Tomcat lib se da como ejemploTomcat 6.0\lib

Asad
fuente
1
¿Qué pasa si no estamos usando ningún IDE y simplemente lo estamos ejecutando en nuestro terminal? Entonces, ¿cómo lidiar con este problema?
Achyuta Aich
si no está utilizando ningún IDE, debe agregar la ruta del archivo jar a su classpath
Asad
2
Agregar a la biblioteca del servidor es un punto importante a tener en cuenta aquí, gracias funcionó para mí
Chandra_S
14

Para proyectos basados ​​en Gradle , necesita una dependencia en MySQL Java Connector :

dependencies {
    compile 'mysql:mysql-connector-java:6.0.+'
}
naXa
fuente
Lo que terminó funcionando para mí fue runtime 'mysql:mysql-connector-java:6.0.+'.
itsmichaelwang
12

Todos han escrito una respuesta, pero todavía me sorprende que nadie la haya respondido utilizando la mejor forma sencilla.
La gente responde que incluye el archivo jar. Pero el error seguirá ocurriendo.

La razón de esto es que el jar no se implementa cuando se ejecuta el proyecto. Entonces, lo que tenemos que hacer es decirle al IDE que implemente este jar también.

La gente de aquí ha respondido tantas veces que puso ese archivo jar en la carpeta lib de WEB-INF. Eso parece estar bien, pero ¿por qué hacerlo manualmente? Hay una forma sencilla. Compruebe los pasos siguientes:

Paso 1: si no ha hecho referencia al archivo jar en el proyecto, hágalo de esta manera.

Haga clic derecho en el proyecto y vaya a las propiedades del proyecto. Luego, vaya a la ruta de compilación de Java, luego agregue un archivo jar externo a través de eso.

Pero esto aún no resolverá el problema porque agregar el jar externo a través de la ruta de compilación solo ayuda a compilar las clases, y el jar no se implementará cuando ejecute el proyecto. Para eso sigue este paso

Haga clic derecho en el proyecto y vaya a las propiedades del proyecto. Luego, vaya al Ensamblado de implementación, luego presione Agregar , luego vaya a las entradas de la ruta de compilación de Java y agregue sus bibliotecas, ya sea jstl, mysql o cualquier otro archivo jar. agréguelos a la implementación. A continuación se muestran las dos imágenes que lo muestran.

Antes de agregar

Después de agregar

Tahir Hussain Mir
fuente
Gracias amigo. Eso funciono. Por qué otros no mencionaron esto tal vez porque esta es una solución solo para la aplicación web dinámica que usa Eclipse
Sayka
@sayka sí, ese podría ser el caso.
Tahir Hussain Mir
11

Tendrá que incluir el controlador jar para MySQL MySQL Connector Jar en su classpath.

Si está utilizando Eclipse: Cómo agregar bibliotecas dependientes en Eclipse

Si está utilizando la línea de comandos, incluya la ruta al contenedor del controlador utilizando el parámetro -cp de java.

java -cp C:\lib\* Main
Narendra Pathai
fuente
¿Qué pasa si no estamos usando ningún IDE y simplemente lo estamos ejecutando en nuestro terminal? Entonces, ¿cómo lidiar con este problema?
Achyuta Aich
1
El uso de -cpda no se pudo encontrar o cargar el error de clase principal. ¿Necesito poner la clase principal en otra carpeta?
zygimantus
8

La API de JDBC consiste principalmente en interfaces que funcionan independientemente de cualquier base de datos. Se requiere un controlador específico de base de datos para cada base de datos que implemente la API de JDBC.

Primero descargue el jar del conector MySQL de www.mysql.com, luego:

Right Click the project -- > build path -- > configure build path

En la pestaña de bibliotecas, presione Add External Jary seleccione su jar.

Sathish SR
fuente
3

Para proyectos basados ​​en Maven, necesita una dependencia.

<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.38</version>
</dependency>
tomtomssi
fuente
2
¿Por qué PostgreSQL? La pregunta es sobre MySQL.
naXa
Editó la respuesta para que coincida con la pregunta
tomtomssi
2

En el proyecto, en la carpeta Bibliotecas -> clic derecho -> Agregar biblioteca -> Mysqlconnector 5.1

Kika_Fortez
fuente
2

El conector del controlador no está en su ruta de construcción. Configure la ruta de compilación y apúntela a 'mysql-connector-java-5.1.25-bin.jar' (verifique la versión que está usando). Alternativamente, puede usar maven: D

shikjohari
fuente
1

Por trivial que pueda parecer en mi caso, el proyecto 7.2.1 de maven de la versión de netbeans era diferente. Hay una carpeta en el proyecto llamada dependencias. Haga clic derecho y luego aparecerá una ventana emergente donde puede buscar paquetes. En el área de consulta poner

mysql-connector

Aparecerá las coincidencias (parece que lo hace en algún repositorio). Haga doble clic y luego instale.

Paul
fuente
1

Es porque la carpeta WEB-INF no existe en la ubicación del subdirectorio en el error. Puede compilar la aplicación para usar la carpeta WEB-INF en public_html O copiar la carpeta WEB-INF en la subcarpeta como en el error anterior.

MilesWeb
fuente
1

Para IntelliJ Idea, vaya a la estructura de su proyecto (Archivo, Estructura del proyecto) y agregue el archivo .jar del conector mysql a su biblioteca global. Una vez allí, haga clic derecho sobre él y elija 'Agregar a módulos'. Presione Aplicar / Aceptar y debería estar listo para comenzar.

Michael Sims
fuente
0

La excepción también puede ocurrir porque la ruta de clases no está definida.

Después de horas de investigación y literalmente pasando por cientos de páginas, el problema era que la ruta de clases de la biblioteca no estaba definida.

Establezca la ruta de clases de la siguiente manera en su máquina con Windows

set classpath=path\to\your\jdbc\jar\file;.
Duro
fuente
0

Si está utilizando tomcat, junto con el directorio del proyecto, también debe copiar el archivo jar del conector de la base de datos en tomcat / lib. esto funcionó para mí

Santosh Kadam
fuente
0

Esto debe usarse a partir de 2020

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.18</version>
    </dependency>
SuperOjo
fuente
0

Estoy desarrollando una aplicación JavaFX11 simple con SQLite Database en Eclipse IDE . Para generar el informe agregué los frascos de Jasper. De repente arroja el error "ESTE" .

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

Funcionaba bien (ANTES DE ESTA ADICION). ¡Pero de repente!

No estoy usando Maven u otros administradores para esta sencilla aplicación. Estoy agregando frascos manualmente.

Creé la "Biblioteca de usuario" y agregué mis frascos de carpetas externas.

ÁREA QUE OCURRE PROBLEMAS: Mi "Biblioteca de usuario" está marcada como biblioteca del sistema. Acabo de quitar la marca. Ahora no es una biblioteca del sistema. "AHORA MI PROYECTO FUNCIONA BIEN".

DEBUG YO MISMO: Probé otras cosas: EN EJECUTAR CONFIGURACIÓN: Pruebe, elimine la biblioteca y agregue los frascos uno por uno y vea. - aquí debe eliminar todos los archivos jar uno por uno, no hay seleccionar todo y eliminar en eclipse ahora mismo en la configuración de ejecución. Entonces, los mensajes de error cambian de un frasco a otro.

Espero que esto ayude a alguien.

Sudhakar Krishnan
fuente