HTTP Status 500 - java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/mydb

Então amigos,

Tive esse problema na hora de executar uma servlet que pega os campos de um formulário. Eu vi que poderia ser que o driver do JDBC nao estaria no Build Path do eclipse, porém, tenho ele devidamente importado. Uso a plataforma JEE do eclipse. Se quiserem posso mandar print da classe e da IDE, talvez nao esteja enxergando algo.

É uma exception de runtime, não de tempo de compilação. O driver do jdbc deve estar no classpath de runtime. você pode colocar o driver dentro do war da aplicação, ou instalá-lo no container de aplicação.

Entao, acho que já está no classpath não?, pq ele está ali nas Referenced Libraries

Tem dois classpaths: o de build e o de runtime. Quando tá ali na IDE, significa que está no de build, mas não necessariamente no de runtime. Isso fica mais claro quando a gente trabalha com Java EE, onde o classpath de runtime não é controlado pela IDE, mas pelo container de aplicação.

pode me explicar como coloco ele no runtime?

Tá usando o Tomcat né? Sinceramente eu não faço a menor ideia de como instalar um driver no classpath do Tomcat. Eu sei como fazer isso no Wildfly. Vou pesquisar aqui e já volto pra te ajudar, se não aparecer ninguém que saiba nesse meio tempo.

1ª tentativa: coloca o .jar do jdbc do mysql na pasta lib do Tomcat, reinicia o servidor e tenta de novo.

Se você souber ler inglês, talvez isso ajude: https://stackoverflow.com/questions/1911253/the-infamous-java-sql-sqlexception-no-suitable-driver-found

To tirando as informações desse post.

Po coloquei na pasta LIB do tomcat, reiniciei o servidor pelo eclipse e continua dando o problema :confused:

Como você tá criando a conexão? Me mostra aquele método da linha 18 do print que você mandou, ConnectionFactory.getConnection.

É esse que vc ta faladno ?

Isso.

Segundo aquele post que eu botei o link ali atrás, você tem que colocar o driver do jdbc dentro do teu arquivo .war que é gerado pelo eclipse. E ali na linha 13, você coloca:

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

Essa linha vai carregar a classe e executar o bloco estático dela.

eu botei ele no lib lá do tomcat e dentro do build path do f21-agenda, é isso?

Clica com o botão direito no jar do driver ali do lado e vê se tem uma opção parecida com “Build Path”, ou caminho de construção, algo assim. Se tiver, vai nessa opção e clica em “adicionar ao build path”. Isso vai fazer com que o Eclipse coloque o driver no .war quando der build no projeto.

consegui adicionar!!, obrigado amigo o/.