Java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/fj21[RESOLVIDO]

22 respostas
A

Senhores meu problema é esse, quando tenta abrir uma conexao com o banco ele me cai uma exception !!
Vi alguns erros desse aqui no forum porem todas as solucoes nao funfaram aqui, colocar na pasta lib do tomcat, na web-inf/lib, pelo build path, usando ip no endereco, com ou sem porta !

Alguma luz ??

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/nx/javaee"
	xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
		http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
		id="WebApp_ID" version="2.5">	
	<display-name>fj21-agenda</display-name>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>		
	
	<servlet>
		<servlet-name>AdicionaContato</servlet-name>
		<servlet-class>br.com.darros.servlet.AdicionaContatoServlet</servlet-class>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>AdicionaContato</servlet-name>
		<url-pattern>/adicionaContato</url-pattern>
	</servlet-mapping>
	
</web-app>
package br.com.darros.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionFactory {
	
	public Connection getConnection(){
		System.out.println("Conectando ao Bancoo !!");
		try{
			Connection con = DriverManager.getConnection("jdbc:mysql://localhost/fj21","root","");
			return con;		
		}catch (SQLException e){
			throw new RuntimeException(e);
		}		
	}
}
package br.com.darros.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.darros.jdbc.dao.ContatoDAO;
import br.com.darros.jdbc.modelo.Contato;

@SuppressWarnings("serial")
public class AdicionaContatoServlet extends HttpServlet{

	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		PrintWriter out = response.getWriter();
		
		String nome  = request.getParameter("nome");
		String email = request.getParameter("email");
		String endereco = request.getParameter("endereco");
//		String dataEmTexto = request.getParameter("dataNascimento");
//		Calendar dataNascimento = null;
//		
//		try {
//			Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);
//			dataNascimento = Calendar.getInstance();
//			dataNascimento.setTime(date);
//		} catch (ParseException e) {
//			out.println("Erro de conversao de data");
//			return;
//		}
		
		Contato contato = new Contato();
		contato.setNome(nome);
		contato.setEmail(email);
		contato.setEndereco(endereco);
//		contato.setDataNascimento(dataNascimento);
		
		ContatoDAO dao = new ContatoDAO();
		dao.Adiciona(contato);
		
		out.println("<html>");
		out.println("<body>");
		out.println("Contato " + contato.getNome() + " adicionado com sucesso !");
		out.println("</body>");
		out.println("</html>");
		
	}
}
Nov 09, 2011 10:29:19 PM org.apache.catalina.core.StandardWrapperValve invoke
Grave: Servlet.service() for servlet [AdicionaContato] in context with path [/fj21-agenda] threw exception
java.lang.RuntimeException: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/fj21
	at br.com.darros.jdbc.ConnectionFactory.getConnection(ConnectionFactory.java:15)
	at br.com.darros.jdbc.dao.ContatoDAO.<init>(ContatoDAO.java:20)
	at br.com.darros.servlet.AdicionaContatoServlet.service(AdicionaContatoServlet.java:44)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/fj21
	at java.sql.DriverManager.getConnection(Unknown Source)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at br.com.darros.jdbc.ConnectionFactory.getConnection(ConnectionFactory.java:12)
	... 19 more

22 Respostas

vinnysoft

Acho que está faltando registrar o driver do MySQL:

Class.forName("com.mysql.jdbc.Driver");

Coloca na ConnectionFactory, antes de criar a conexão.

até +!

A

Valeuuu, funciono !!

Obrigadoo !

leonardoteles

Pergunta. Pela descrição do código, o exemplo é da apostila FJ21 da Caelum. Estou tendo o mesmo problema aqui. Na apostila diz que a partir do java 6 nã é mais necessário utilizar este passo. Estou utilizando o java 6 mas mesmo assim esse erro preciste. A princípio, coloquei o driver do connector do Mysql mais novo. Depois mudei para o que vem no próprio banco, para testar, mas nada!!

Meu código está exatamente o mesmo do descrito pelo colega. Poderia me dar uma ajuda?. Desde já obrigado!!

leonardoteles

Pessoal. Consegui resolver. Vi aqui http://www.devmedia.com.br/forum/java/395387-Nao-consigo-gravar-no-banco-usando-JDBC-em-projeto-WEB.html o que estava acontecendo, e percebi que tbm se tratava do mesmo erro. Colocar DriverManager.registerDriver resolveu meu problema.

As configurações que estou usando são as seguintes: Win7 64(irrelevante), JDK 1.7.0, Mysql 5.5, conector do mysql 5.1.18

Abração!!

Spammer

leonardoteles:
Pessoal. Consegui resolver. Vi aqui http://www.devmedia.com.br/forum/java/395387-Nao-consigo-gravar-no-banco-usando-JDBC-em-projeto-WEB.html o que estava acontecendo, e percebi que tbm se tratava do mesmo erro. Colocar DriverManager.registerDriver resolveu meu problema.

As configurações que estou usando são as seguintes: Win7 64(irrelevante), JDK 1.7.0, Mysql 5.5, conector do mysql 5.1.18

Abração!!

Valeu, estava lutando com o mesmo erro e nao sabia como resolver. E se alguem pudesse explicar explicar porque deve-se registar o Driver agradeceria muito, visto que a partir de java 1.6 nao era necessario?

D

Exatamente, tive o mesmo problema, resolvido, porem PORQUE raios preciso dar registerDrive sendo que o java 1.6 ja nao precisa disso?

Fica a questão.

Spammer

dertyu765:
Exatamente, tive o mesmo problema, resolvido, porem PORQUE raios preciso dar registerDrive sendo que o java 1.6 ja nao precisa disso?

Fica a questão.

Eu também nao entendi o porque do erro quando o tive, tenho varios projectos criados da mesma forma e nenhum deles alguma vez deu um erro desses

deividsoncs

Sei que o tópico é velho, mas tive esse problema recentemente, e resolvi, importando o mysql-connector-java-5.1.25-bin.jar também para a pasta lib do servidor TomCat! Encontrei em um outro tópico deste fórum, não me lembro a URL.

fboscato

Tem que usar essa linha antes do return para funcionar.

DriverManager.registerDriver(new com.mysql.jdbc.Driver()); return DriverManager.getConnection("jdbc:mysql://localhost/fj21", "root", "admin");

jameswpm

Sei que o tópico é bem velho, mas eu tive exatamente o mesmo problema, procurei diversas soluções (aqui no GUJ inclusive) e está solução de incluir o regiterDriver funcionou perfeitamente!

L

Eu também. Iniciando no Java, mas com muito tempo de experiência no desenvolvimento WEB. Mas só funcionou depois de ler este Post. Mas acho que isso é normal. A apostila te da um direcionamento. O que não funcionar é pesquisa, ou aula.

Att.

M

Seguindo o padrão ConnectionFactory ensinado pela Caelum, resolvi da seguinte forma:

try {
			Class.forName("com.mysql.jdbc.Driver");
			return DriverManager.getConnection(URL, USER, PASSWORD);
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
		catch(ClassNotFoundException e){
			throw new RuntimeException(e);
		}

O erro estava acontecendo ao criar um objeto do tipo Dao, mas só ocorria se o mesmo fosse criado na servlet, em classes de teste não apresentava o erro. A classe tinha um construtor que retornava uma conexão. Ao registrar o driver e tratar a exceção tudo funcionou.

R

fboscato:
Tem que usar essa linha antes do return para funcionar.

DriverManager.registerDriver(new com.mysql.jdbc.Driver()); return DriverManager.getConnection("jdbc:mysql://localhost/fj21", "root", "admin");


Realmente salvou.
Tinha um projeto já rodando na base… Porem fora da web, com o driver devidamente adicionado no classPath. Porem ao criar servlets dava erro de driver não encontrado, bastando apenas mudar a ConnectionFactory.

Grato.

M

Fala galera,

Tive o mesmo problema. Olhando os posts aqui, consegui resolver registrando o driver na classe ConnectionFactory:

try {

Class.forName(“com.mysql.jdbc.Driver”);

return DriverManager.getConnection(“jdbc:mysql://localhost:3306/fj21, USER, PASSWORD);

} catch (SQLException | ClassNotFoundException e) {

throw new RuntimeException(e);

}

Estou trabalhando com Java 8 e o Tomcat 8.

Abs.

Matos

Jeferson_Carlos

Caso ainda alguém tenha problemas mesmo fazendo esses passos do pessoal.
Eu achei uma outra maneira que fiz e deu certo também.
Só ir la no mysql.jar que tem que estar no WEB-INF/lib , clica com o botão direito no .jar vai em Build Path … Configure Build Path…
Vai aparecer do lado direito no inicio algo como:
o nome do arquivo .jar… e no final vai estar como (missing).
É só clicar duas vezes nele, vai abrir o diretório com o arquivo .jar novamente, ai e só você selecionar ele , clicar em OK, depois em Apply.
Reinicia o TomCat e testa novamente que vai dar certo.

F

Pq vc provavelmente tá usando o Tomcat 7 ou superior. Aí por medida de segurança ele te obriga a registrar o drive JDBC

iamgilvan

Obrigado pessoal!! Me ajudou aqui.

L

Verifiquei duas formas que funcionaram.
Comentei a primeira parte e segunda é a do registro do drive abaixo do
try { DriverManager.registerDriver(new com.mysql.jdbc.Driver());


//static {

//	try {

//		Class.forName(“com.mysql.jdbc.Driver”);

//	} catch (Exception e) {

//		System.out.println(“ERRO”);

//		e.printStackTrace();

//	}

//}

public Connection getConnection() {

try{

DriverManager.registerDriver(new com.mysql.jdbc.Driver());

return DriverManager.getConnection(
edmilson_vasconcelos

Aí velho… O meu funcionou pelo que você falou, muito obrigado!

V

Estava com o mesmo problema depois de ver esse post conseguir resolver
Class.forName("org.postgresql.Driver");
:+1::+1:

J

clique com o botão direito na pasta que está o jar do mysql, Na Opção Buid Path escolha User AS Source Path, Faça isso para a pasta e para o arquivo do MYSQL, que o java irá reconhecer que é parte do projeto.

Oliver_Dief

Boa tarde senhores!
Puts eu fiquei o dia todo tentando resolver esse mesmo problema e tentei todas as opções mencionadas aqui. Só depois de apanhar muito que eu percebi que o .jar do mysql não estava na pasta WEB-INF/lib. Acontece kkk Espero ter ajudado os desligados como eu, se for o caso.
Um abraço!

Criado 9 de novembro de 2011
Ultima resposta 3 de mai. de 2020
Respostas 22
Participantes 20