Driver MYSQL JDBC - Onde colocar?

Fala galera…

Procurei no fórum e vi muitas mensagem bem semelhantes a minha dúvida, mas quero perguntar de forma bem específica.

Eu criei um Dynamic Web Project no Eclipse, fiz um index.jsp e coloquei isso aqui:

<%@ page language="java" import="java.sql.*" errorPage="" %>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
	Class.forName("com.mysql.jdbc.Driver");
	Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/teste", "root", "");
	Statement stm = con.createStatement();

	ResultSet res = stm.executeQuery("SELECT * FROM funcionario");
	while(res.next()){
		out.println("Nome: " + res.getString("nome"));
		out.println(" - Usuario: " + res.getString("usuario")+"<br/>");
	}
%>
</body>
</html>

Bem, aí que vem a dúvida. O index só rodou quando eu coloquei manualmente o .jar do conector Mysql na pasta lib do Tomcat ou na pasta lib da aplicação.

Fazendo o esquema de clicar com o botão direito no projeto, Build Path > Configure Build Path > Libraries > Add External Jars e indicando o .JAR do conector não funciona de jeito nenhum. Até porque quando vou ver o .JAR não está lá na pasta lib da aplicação.

Então a pergunta é:
O projeto só funciona quando colocamos o .JAR na pasta lib mesmo??
Não tem uma maneira de fazer isso funcionar pelo Eclipse??

Abraços galera! E Obrigado antecipadamente pelas respostas!

Bokerão
Java Padawan

Projetos WEB são diferentes de projetos DESKTOP.

Em projeto WEB, os .JARs devem ficar dentro do diretorio WEB-INF/lib da applicação ou no lib do Servidor.

A pergunta é: qual o problema você está enfrentando por ser assim?

[dica]
Pelo jeito você está estudando ainda, mas NUNCA faça uma conexão em um JSP. Separe as suas camadas
[/dica]

Obrigado pela resposta Jair.
Obviamente estou estudando, por isso abri a conexão no JSP e fiz a listagem dos dados
Eu sei que os JAR’s em uma aplicação WEB tem que estar na WEB-INF/lib da aplicação ou na pasta lib do servidor (Vide Post nº 1)
A questão é se o Eclipse no momento em que eu adiciono uma biblioteca percebe ou não que aquele é um projeto WEB e de forma automática coloca o .JAR na pasta WEB-INF/lib do referido projeto?
Se a resposta for não, eu sei que toda vez que tiver um projeto web terei que colocar os .JAR necessários na unha na pasta WEB-INF/lib ou na pasta lib do servidor.
Se a resposta for sim, o caminho que estou fazendo está errado? (novamente Vide Post nº 1)

eu não sei se to fazendo certo mais…

estudando aki, tava usando o eclipse, o que eu fiz foi clica com o direito no projeto, ir em properties (que da no mesmo lugar que no configure build path) ai eu fui em java ee module dependencies, e depois tem opções la pra adicionar jar, jar externo, essas coisas… (aqui pra mim funciono)

é aconselhado levar bem a serio o que o jair falo quanto as camadas…

Bom dia

Quando estamos falando de aplicação web as manerias convencionais de trabalhar com as bibliotecas jar são:

1º) Você coloca o jar dentro da pasta lib, que se encontra dentro da pasta WEB-INF da sua aplicação.

2º) Você coloca os jar dentro da pasta lib do conteiner que você estiver utilizando, exemplo:

No Tomcat 5.5 você deve colocar os jar dentro da pasta Tomcat 5.5\common\lib

No Tomcat 6.0 você coloca o jar dentro de Tomcat 6.0\lib

Espero ter ajudado.

[quote=bokerao]Obrigado pela resposta Jair.
Obviamente estou estudando, por isso abri a conexão no JSP e fiz a listagem dos dados
Eu sei que os JAR’s em uma aplicação WEB tem que estar na WEB-INF/lib da aplicação ou na pasta lib do servidor (Vide Post nº 1)
A questão é se o Eclipse no momento em que eu adiciono uma biblioteca percebe ou não que aquele é um projeto WEB e de forma automática coloca o .JAR na pasta WEB-INF/lib do referido projeto?
Se a resposta for não, eu sei que toda vez que tiver um projeto web terei que colocar os .JAR necessários na unha na pasta WEB-INF/lib ou na pasta lib do servidor.
Se a resposta for sim, o caminho que estou fazendo está errado? (novamente Vide Post nº 1)[/quote]

Não, o Eclipse não copia direto para dentro do diretório WEB-INF/lib, esse processo você tem que fazer manualmente.

O que você poe fazer, é copiar diretamente o arquivo para dentro do lib e não alterar nada no eclipse, pois ele já vai reconhecer esse JAR.

Obrigado Jair, Caio e Maior Abandonado (!?!? rsrs)

no meu caso não uso o tomcat e sim o Sun glassfish.
alguem sabe me dizer aonde coloco o driver “jdbcodc.dll”??? :cry:

[quote=tsorfano]no meu caso não uso o tomcat e sim o Sun glassfish.
alguem sabe me dizer aonde coloco o driver “jdbcodc.dll”??? :cry: [/quote]

vc ta usando glassfish com eclipse?

E a respeito da primeira pergunta eu conseguir conectar normalmente, usando dynamic web project, porem tive que colocar o drive manualmente.

Pra não abrir outro post, vou colocar minha observação aqui mesmo caso alguém tenha o mesmo problema que eu acabei de ter…
estou refazendo a apostila nova da caelum do curso fj-21…a última versão da apostila…e tive problema com o driver do mysql na minha aplicação…estou usando o eclipse helios, o apache tomcat 7.02 e o mysql mais novo tbm!!

então…configurei na boa, como manda o figurino, o jar na aplicação mas estava me retornando erro direto de falta de driver do banco “teste”…olhei aqui (como sempre a comunidade salvando minha pele…thanks!!) e vi que um dos comments a respeito desse erro poderia ser resolvido colocando o driver na pasta lib do tomcat tbm…mas como na apostila não fala nada disso e quando fiz meu curso tbm não me lembro de ter feito isso, fiz esse teste e funfou blzinha…se alguém estiver estudando pela apostila nova e estiver utilizando os mesmos recursos que eu para programação vai aí a dica…
se der erro 500 de falta de driver do banco “teste”…coloca o jar na pasta lib do tomcat que vai rolar na boa…abraços a todos e mais uma vez muito obrigado comunidade!!

obs: repetindo meus recursos: eclipse helios, apache tomcat 7.02 e mysql mais novo com o mysql-connector-java 5.1.12-bin

leonardoteles, dá uma olhada no post anterior do MaiorAbandonado e tenta fazer isso que ele diz. Acho que colocando como dependencia vai rolar.

Aqui segue o post dele: :slight_smile:

Espero ter ajudado.

[quote=maior_abandonado]eu não sei se to fazendo certo mais…

estudando aki, tava usando o eclipse, o que eu fiz foi clica com o direito no projeto, ir em properties (que da no mesmo lugar que no configure build path) ai eu fui em java ee module dependencies, e depois tem opções la pra adicionar jar, jar externo, essas coisas… (aqui pra mim funciono)

é aconselhado levar bem a serio o que o jair falo quanto as camadas…[/quote]

Ajuda sim…mas postei dessa forma pois foi a forma que consegui resolver meu problema pq estava desesperado na hora!!!
De qualquer forma, valeu pela dica…
Abração!!

Olá, boa tarde. Eu estou tendo o mesmo problema: estou utilizando a apostila fj21 da Caelum e utilizando eclipse indigo + tomcat 7 + oracle, porém na hora de rodar a minha aplicação o driver da oracle não é encontrado. Já verifiquei e testei todas as dicas dadas em vários posts do Guj mas nenhum resolveu o meu problema.

Meu driver está na pasta WEB-INF/lib do projeto no eclipse e devidamente configurado no classpath da aplicação. Já verifiquei se o driver tbm está na pasta WEB-INF/lib da aplicação (no tomcat) e verifiquei que está lá. Já tentei adicionar o driver à pasta lib do próprio tomcat. Já testei colocar o driver dentro da jre, conforme vi num outro post, mas até agora nenhuma dessas soluções resolveu o meu problema.

Alguém mais tem alguma outra idéia de como resolver esse problema?

Leonardo Souza

Resolvido meu problema! Em algum lugar da web eu li que a partir da versão 6 do Java não era mais necessário registrar o driver antes de iniciar uma conexão com o banco. E eu utilizava em todas as minhas aplicações uma conexão com o banco sem escrever a linha abaixo.

Após alguns testes eu verifiquei que era exatamente esse o problema da minha aplicação web. Eu não tinha escrito esta linha. Mas agora fiquei na dúvida do porque em aplicações desktop funcionou mas em aplicações web não funcionou. Alguém saberia me explicar?

Se não sabe onde colocar o driver, que tal pelo menos descobrir onde colocar o tópico?
Seu tópico é sobre banco de dados, portanto, ao invés de Java Básico, você deveria tê-lo colocado no fórum de persistência.

Procure ler com atenção a lista de tópicos antes de postar. Tópico movido.

Estou fazendo um exercício da Caelum, e coloquei o driver no diretório já informado ->> Projeto/WebContent/WEB-INF/lib/, porém confinou a receber o seguinte erro (veja abaixo).
Estou executando a partir de um TesteConexao.java.

Exception in thread “main” java.lang.RuntimeException: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/fj21/
at jdbc.ConnectionFactory.getConnection(ConnectionFactory.java:12)
at teste.TestaConexao.main(TestaConexao.java:11)
Caused by: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/fj21/
at java.sql.DriverManager.getConnection(DriverManager.java:596)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at jdbc.ConnectionFactory.getConnection(ConnectionFactory.java:10)
… 1 more