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

88

O que há de errado com o código são muitos erros durante a depuração. Estou escrevendo um código para uma classe singleton para se conectar com o banco de dados mysql.

Aqui está meu código

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

Eu sou novo em java. Por favor ajude.

atikul hussain
fonte
2
O driver jar está em seu classpath?
NINCOMPOOP
certifique-se de ter sincronizado em getInstance ()
Siddharth
Possível duplicata de ClassNotFoundException com.mysql.jdbc.Driver
pathikrit
1
Você precisa colar o arquivo jar no diretório lib do seu servidor da web, se estiver recebendo o erro no tempo de execução. ao passo que, se você estiver obtendo o erro no tempo de compilação, adicione o jar no caminho de construção.
djangodude

Respostas:

124

Parece que a biblioteca de conectividade mysql não está incluída no projeto. Resolva o problema seguindo uma das soluções propostas:

  • SOLUÇÃO DE PROJETOS MAVEN

Adicione a dependência do conector mysql ao arquivo de projeto pom.xml:

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

Aqui estão todas as versões: https://mvnrepository.com/artifact/mysql/mysql-connector-java

  • SOLUÇÃO DE TODOS OS PROJETOS

Adicione a biblioteca jar manualmente ao projeto.

Clique com o botão direito do mouse no projeto -> caminho de construção -> configure o caminho de construção

No Libraries Tab prelo Add External Jar e em Selectsua jarra.

Você pode encontrar o zip para o conector mysql aqui

  • Explicação:

Ao construir o projeto, o java lança uma exceção porque um arquivo (a classe com.mysql.jdbc.Driver) da biblioteca de conectividade mysql não foi encontrado. A solução é adicionar a biblioteca ao projeto, e java encontrará o com.mysql.jdbc.Driver

R9J
fonte
7
E se não estivermos usando nenhum IDE e simplesmente rodando em nosso terminal? Então, como lidar com esse problema?
Achyuta Aich
2
O problema não será resolvido até que você adicione o mysql-connector-java-8.0.15.jararquivo à apache-tomcat-9.0.16\libpasta, conforme sugerido por @Asad.
SWETA KESUR
53

Se você obteve o erro em seu IDE (erro em tempo de compilação), você precisa adicionar seu arquivo jar do conector mysql às suas bibliotecas e adicioná-lo à sua biblioteca referenciada do projeto também.

Se você receber esse erro ao executá-lo, provavelmente é porque você não incluiu o arquivo JAR do conector mysql na pasta lib do seu servidor web.

Adicione mysql-connector-java-5.1.25-bin.jarao seu classpath e também ao diretório lib do seu servidor web. O caminho da lib do Tomcat é dado como exemploTomcat 6.0\lib

Asad
fonte
1
E se não estivermos usando nenhum IDE e simplesmente rodando em nosso terminal? Então, como lidar com esse problema?
Achyuta Aich
se você não estiver usando nenhum IDE, deverá adicionar o caminho do arquivo jar ao seu classpath
Asad
2
Adicionar à biblioteca do servidor é um ponto importante a se observar aqui, obrigado funcionou para mim
Chandra_S
14

Para projetos baseados em Gradle , você precisa de uma dependência do MySQL Java Connector :

dependencies {
    compile 'mysql:mysql-connector-java:6.0.+'
}
naXa
fonte
O que acabou funcionando para mim foi runtime 'mysql:mysql-connector-java:6.0.+'.
itsmichaelwang,
11

Você terá que incluir o jar do driver para MySQL MySQL Connector Jar em seu classpath.

Se você estiver usando o Eclipse: como adicionar bibliotecas dependentes no Eclipse

Se você estiver usando a linha de comando, inclua o caminho para o jar do driver usando o parâmetro -cp do java.

java -cp C:\lib\* Main
Narendra Pathai
fonte
E se não estivermos usando nenhum IDE e simplesmente rodando em nosso terminal? Então, como lidar com esse problema?
Achyuta Aich
1
Usando -cpdá Não foi possível encontrar ou carregar o erro da classe principal. Eu preciso colocar a classe principal em outra pasta?
zygimantus
11

verifique se há jar (mysql-connector-java-bin)no seu classpath, baixe aqui

KhAn SaAb
fonte
11

Cada um escreveu uma resposta, mas ainda estou surpreso que ninguém realmente respondeu usando a melhor maneira simples.
As pessoas respondem que incluem o arquivo jar. Mas, o erro ainda ocorrerá.

A razão para isso é que o jar não é implantado quando o projeto é executado. Portanto, o que precisamos fazer é dizer ao IDE para implantar este jar também.

O pessoal daqui já respondeu tantas vezes que colocou aquele arquivo jar na pasta lib do WEB-INF. Parece bom, mas por que fazer manualmente. Existe uma maneira simples. Verifique as etapas abaixo:

Etapa 1: se você não fez referência ao arquivo jar no projeto, faça referência a ele desta forma.

Clique com o botão direito no projeto e vá para as propriedades do projeto. Em seguida, vá para o caminho de construção do java e adicione o arquivo jar externo por meio dele.

Mas isso ainda não resolverá o problema porque adicionar o jar externo por meio do caminho de construção apenas ajuda a compilar as classes, e o jar não será implantado quando você executar o projeto. Para isso siga este passo

Clique com o botão direito no projeto e vá para as propriedades do projeto. Em seguida, vá para o Deployment Assembly e pressione Adicionar , depois vá para as entradas do caminho de construção java e adicione suas bibliotecas, seja jstl, mysql ou qualquer outro arquivo jar. adicione-os à implantação. Abaixo estão as duas fotos que o exibem.

Antes de adicionar

Depois de adicionar

Tahir Hussain Mir
fonte
Valeu cara. Isso funcionou. Por que outros não mencionaram isso, talvez porque esta é uma solução apenas para aplicativo Web dinâmico usando Eclipse
Sayka
@sayka sim, pode ser o caso.
Tahir Hussain Mir
8

A API JDBC consiste principalmente em interfaces que funcionam independentemente de qualquer banco de dados. Um driver específico de banco de dados é necessário para cada banco de dados que implementa a API JDBC.

Primeiro, baixe o jar do conector MySQL em www.mysql.com e:

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

Na guia Bibliotecas, pressione Add External Jare selecione seu jar.

Sathish SR
fonte
3

Para projetos baseados em Maven, você precisa de uma dependência.

<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.38</version>
</dependency>
tomtomssi
fonte
2
Por que PostgreSQL? A questão é sobre o MySQL.
naXa de
Resposta editada para corresponder à pergunta
tomtomssi
2

No projeto na pasta Bibliotecas -> clique com o botão direito -> Adicionar Biblioteca -> Mysqlconnector 5.1

Kika_Fortez
fonte
2

O conector do driver não está em seu caminho de construção. Configure o caminho de construção e aponte-o para 'mysql-connector-java-5.1.25-bin.jar' (verifique a versão que você está usando). Alternativamente, você pode usar o maven: D

shikjohari
fonte
1

Por mais trivial que possa parecer no meu caso, o projeto 7.2.1 do maven da versão do netbeans era diferente. Existe uma pasta no projeto chamada dependências. Clique com o botão direito e abrirá uma janela pop-up onde você pode pesquisar por pacotes. Na área de consulta, coloque

mysql-connector

Ele trará as correspondências (parece que faz isso em algum repositório). Clique duas vezes e instale.

Paulo
fonte
1

Isso ocorre porque a pasta WEB-INF não existe no local no subdiretório do erro. Você pode compilar o aplicativo para usar a pasta WEB-INF em public_html OU copiar a pasta WEB-INF na subpasta como no erro acima.

MilesWeb
fonte
1

Para o IntelliJ Idea, vá para a estrutura do projeto (Arquivo, Estrutura do projeto) e adicione o arquivo .jar do conector mysql à sua biblioteca global. Uma vez lá, clique com o botão direito sobre ele e escolha 'Adicionar aos Módulos'. Clique em Aplicar / OK e você estará pronto para ir.

Michael Sims
fonte
0

A exceção também pode ocorrer porque o caminho da classe não foi definido.

Depois de horas de pesquisa e literalmente percorrendo centenas de páginas, o problema era que o caminho das aulas da biblioteca não estava definido.

Defina o caminho da classe como segue em sua máquina Windows

set classpath=path\to\your\jdbc\jar\file;.
Áspero
fonte
0

Se você estiver usando o tomcat, junto com o diretório do projeto, você também deve copiar o arquivo jar do conector do banco de dados para tomcat / lib. isso funcionou para mim

Santosh Kadam
fonte
0

Isso precisa ser usado a partir de 2020

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.18</version>
    </dependency>
SuperEye
fonte
0

Estou desenvolvendo um aplicativo JavaFX11 simples com banco de dados SQLite no Eclipse IDE . Para gerar o relatório, adicionei jars Jasper. De repente, ele gera o erro "ESTE" .

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

Estava funcionando bem (ANTES DESTA ADIÇÃO). Mas de repente!

Não estou usando o maven ou outros gerenciadores para este aplicativo simples. Estou adicionando potes manualmente.

Eu criei "Biblioteca do usuário" e adicionei meus jars de pastas externas.

PROBLEMA OCORRENDO NA ÁREA: Minha "Biblioteca do usuário" está marcada como biblioteca do sistema. Acabei de remover a marcação. Agora não é uma biblioteca do sistema. "AGORA MEU PROJETO ESTÁ FUNCIONANDO BEM".

DEBUG MYSELF: Tentei outras coisas: AT RUN CONFIGURATION: Tente remover a biblioteca e adicionar jars um a um e ver. - aqui você tem que excluir todos os jars um por um, não há selecionar todos e remover no eclipse agora na configuração de execução. Portanto, as mensagens de erro mudam de um frasco para o outro.

Espero que isso ajude alguém.

Sudhakar Krishnan
fonte