Conexão MySQL

Olá,
estou tendo dificuldades com conexão ao mysql no eclipse, mesmo eu colocando no BuildPath em libraries a classe do mysqlconnector ele da o erro de ClassNotFoundException, segue o erro abaixo:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Unknown Source)
	at bdConnection.getConnection(bdConnection.java:21)
	at conectaBD.service(conectaBD.java:34)
	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:240)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
	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)
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Unknown Source)
	at bdConnection.getConnection(bdConnection.java:21)
	at conectaBD.service(conectaBD.java:34)
	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:240)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
	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)

Esta é minha classe que faz a conexão:

[code]
public class bdConnection {
String pathDriver,serverIp,bdName,queryConnection,user,password;

public bdConnection() {
	this.pathDriver = "com.mysql.jdbc.Driver";
	this.serverIp = "localhost";
	this.bdName = "livraria";
	this.queryConnection = "jdbc:mysql://" + serverIp + "/" + bdName;
	this.user = "root";
	this.password = "";
}

public Connection getConnection() throws ClassNotFoundException, SQLException{
		Class.forName(pathDriver);
		Connection conn = (Connection) DriverManager.getConnection(queryConnection,user,password);
		return conn;
}

}[/code]

Versão do mysqlConnector que estou usando é a 5.1.18, o arquivo .jar está mapeado no build path, isso já aconteceu com alguém ai? ou estou fazendo algo de errado :oops:

Cara sua conexão está ok, testei e funcionou.
Por via das duvidas, tem inserir esse endereço: org.gjt.mm.mysql.Driver, no lugar de com.mysql.jdbc.Driver.
Também verifique se inseriu o drive corretamente.

Boa sorte.

Oi.

Tens certeza que adicionar ao Java Build Path corretamente e no projeto que necessita dele?
Pois se rodar por dentro do eclipse e estiver no Java Build Path, não vejo o porque de dar essa exceção.

Bom dia nel, Fexx, me corrijam caso esteja errado, mas todas as vezes que realizei a conexão usando MySql usava sempre “com.mysql.jdbc.driver” com o “d” do driver em minúsculo .

Acho que identifiquei o problema, rodei um testCase dessa classe e não tive problemas, porém eu estava usando está classe numa página web, minha primeira página tinha um botão simples de Conectar, ela chamava um servlet que instanciava um novo objeto de conexão, simplesmente isso, é nessa hora que acontece o erro, queria saber se isso influencia no caso, apesar que se eu simplesmente instancio um objeto num servlet não deveria dar esse problema certo? se o testCase deu certo :shock:

O correto é com o “D” maiúsculo já que é o padrão de classes se inicial com letra Maiúscula. esse é um diretório informando onde fica a classe Drive.

Se utilizava com o “d” minusculo não sei o porque conectava, era para retornar um .ClassNotFoundException. :?

E está rodando o Servlet por dentro do Eclipse colega? :slight_smile:
O testcase funcionou porque é no mesmo projeto em que tu adicionou o jar no build path. Existe tempo de compilação e tempo de execução. Se está rodando essa pagina web tens um web container não tem? É nele que deve estar o seu jar :slight_smile:

E está rodando o Servlet por dentro do Eclipse colega? :slight_smile:
O testcase funcionou porque é no mesmo projeto em que tu adicionou o jar no build path. Existe tempo de compilação e tempo de execução. Se está rodando essa pagina web tens um web container não tem? É nele que deve estar o seu jar :)[/quote]
faz sentido, uso o tomcat 7 pelo eclipse, mesmo executando dentro do eclipse e as bibliotecas estarem mapeadas precisaria fazer mais alguma coisa?

O correto é com o “D” maiúsculo já que é o padrão de classes se inicial com letra Maiúscula. esse é um diretório informando onde fica a classe Drive.

Se utilizava com o “d” minusculo não sei o porque conectava, era para retornar um .ClassNotFoundException. :?
[/quote]
Corretíssimo Fexx, acabei de ver meu código aqui.

E está rodando o Servlet por dentro do Eclipse colega? :slight_smile:
O testcase funcionou porque é no mesmo projeto em que tu adicionou o jar no build path. Existe tempo de compilação e tempo de execução. Se está rodando essa pagina web tens um web container não tem? É nele que deve estar o seu jar :)[/quote]
faz sentido, uso o tomcat 7 pelo eclipse, mesmo executando dentro do eclipse e as bibliotecas estarem mapeadas precisaria fazer mais alguma coisa?[/quote]

Não. O que o Eclipse faz é um link para o Tomcat. Ele vai usar o Tomcat da sua máquina, portanto, todas as lib´s que estiverem nele. Como não tem o driver do MySQL na biblioteca do Tomcat, gera o erro. O poder de rodar o Tomcat dentro do Eclipse é somente um facilitador, não altera a forma como ele deve ser tratado.

Aleluia Irmão xD resolvi esse pepino, segue classe para explicação:

[code]
public class bdConnection {
String pathDriver,serverIp,bdName,queryConnection,user,password;

public bdConnection() {
	this.pathDriver = "org.gjt.mm.mysql.Driver";
	this.serverIp = "localhost";
	this.bdName = "livraria";
	this.queryConnection = "jdbc:mysql://" + serverIp + "/" + bdName;
	this.user = "root";
	this.password = "";
}

public Connection getConnection() throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException{
		Class.forName(pathDriver).newInstance();
		return (Connection) DriverManager.getConnection(queryConnection,user,password);
}

}[/code]
Di um newInstance() no metodo de instanciação da classe do Driver que nesse caso mudei para org.gjt.mm.mysql.Driver, funcionou 8) posso continua meu estudo em desenvolvimento web agora^^, agradeço a ajuda do pessoal