Conexão com MySQL

Olá Pessoal!

Tenho aqui instalado o AppServ, que vem o Apache+PHP+MySQL+phpmyadmin, um servidor local normal.

Fiz um projeto no BlueJ para conectar ao BD MySQL, só que não vai de jeito nenhum!

Sempre dá o erro: Exception: com.mysql.jdbc.Driver

Segue o código:

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

public class MySQL{

  public static void main(String args[]) {
    Connection con = null;

    try {
       Class.forName("com.mysql.jdbc.Driver").newInstance();
       con = DriverManager.getConnection("jdbc:mysql://localhost/test?user=root&password=123456");

      if(!con.isClosed())
        System.out.println("Successfully connected to MySQL server using TCP/IP...");

    } catch(Exception e) {
      System.err.println("Exception: " + e.getMessage());
    } finally {
      try {
        if(con != null)
          con.close();
      } catch(SQLException e) {}
    }
  }
}

Já baixei o Conector/J, já setei o classpath nas variáveis de ambiente, enfim, já fiz praticamente tudo aqui…

Nas variáveis de ambiente está assim:

Variáveis de Usuário:

Nome -> Valor
JAVA_HOME - > F:\Arquivos de programas\Java
PATH -> F:\AppServ\Apache2.2\bin;F:\AppServ\php5;F:\AppServ\MySQL\bin;F:\Arquivos de programas\Java\jdk1.6.0_03\bin\

Variáveis do Sistema:

Nome -> Valor
CLASSPATH -> .;%CLASSPATH%;F:\Arquivos de programas\Java\jdk1.6.0_03\lib\tools.jar;F:\Arquivos de programas\Java\jre1.6.0_05\lib\ext\QTJava.zip;F:\AppServ\MySQL\mysql-connector-java-5.1.6-bin.jar
PATH -> %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;F:\Arquivos de programas\Support Tools;F:\Arquivos de programas\Smart Projects\IsoBuster;F:\Arquivos de programas\Universal Extractor\bin;F:\Arquivos de programas\QuickTime\QTSystem;F:\Arquivos de programas\Altiris\Software Virtualization Agent;F:\Arquivos de programas\Java\jdk1.6.0_03\bin
JAVA_HOME -> F:\Arquivos de programas\Java\

Obs.: Não liguem para o F:\ não… rs :oops:

E na facul roda normalmente… Mas lá está instalado o MySQL Server, que no caso estou puxando aqui agora para ver se é por isso, mas de qualquer forma, toda ajuda é sempre bem vinda!

Abraços!

Olá amigo,

você pode postar o stacktrace completo? Assim facilita nosssa vida!

altere a linha:

System.err.println("Exception: " + e.getMessage());  

por:

e.printStackTrace();

:lol:

[quote=TangZero]Olá amigo,

você pode postar o stacktrace completo? Assim facilita nosssa vida!
:lol: [/quote]

Meu amigo, me desculpe, mas o que é StackTrace? Não sei o que é, mas deve ser isso: :slight_smile:

Exception: com.mysql.jdbc.Driver
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:169)
	at MySQL.main(MySQL.java:11)
	at __SHELL5.run(__SHELL5.java:6)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at bluej.runtime.ExecServer$3.run(ExecServer.java:855)

Caso eu esteja errado, me corrija. Valeu!!

[quote=ORiON][quote=TangZero]Olá amigo,

você pode postar o stacktrace completo? Assim facilita nosssa vida!
:lol: [/quote]

Meu amigo, me desculpe, mas o que é StackTrace? Não sei o que é, mas deve ser isso: :slight_smile:

Exception: com.mysql.jdbc.Driver
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:169)
	at MySQL.main(MySQL.java:11)
	at __SHELL5.run(__SHELL5.java:6)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at bluej.runtime.ExecServer$3.run(ExecServer.java:855)

Caso eu esteja errado, me corrija. Valeu!![/quote]

É isso mesmo! :smiley:

O Java não encontra a classe com.mysql.jdbc.Driver no seu classpath.
A variável de ambiente CLASS_PATH, aparentemente, está correta.
O problema é que ao se rodar o java com a opção -cp habilitada, o conteúdo dessa variável de ambeinte é ignorado. Geralmente as IDEs rodam os programas com a opção -cp.
Você vai ter que procurar no BlueJ, aonde você pode setar as libraries do seu projeto, dessa maneira, o BlueJ colocara automaticamente o jar do Connector/J no seu classpath.

:wink:

Conforme próprio manual do BlueJ:

Então, é só você criar um diretório chamado +libs no seu projeto, e colocar o jar do Connector/J lá dentro.
Espero ter ajudado. :slight_smile:

[quote=TangZero][quote=ORiON][quote=TangZero]Olá amigo,

você pode postar o stacktrace completo? Assim facilita nosssa vida!
:lol: [/quote]

Meu amigo, me desculpe, mas o que é StackTrace? Não sei o que é, mas deve ser isso: :slight_smile:

Exception: com.mysql.jdbc.Driver
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:169)
	at MySQL.main(MySQL.java:11)
	at __SHELL5.run(__SHELL5.java:6)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at bluej.runtime.ExecServer$3.run(ExecServer.java:855)

Caso eu esteja errado, me corrija. Valeu!![/quote]

É isso mesmo! :smiley:

O Java não encontra a classe com.mysql.jdbc.Driver no seu classpath.
A variável de ambiente CLASS_PATH, aparentemente, está correta.
O problema é que ao se rodar o java com a opção -cp habilitada, o conteúdo dessa variável de ambeinte é ignorado. Geralmente as IDEs rodam os programas com a opção -cp.
Você vai ter que procurar no BlueJ, aonde você pode setar as libraries do seu projeto, dessa maneira, o BlueJ colocara automaticamente o jar do Connector/J no seu classpath.

:wink: [/quote]

Humm ok! Fui em Options -> Preferences -> Libraries e adicionei o .jar do Conector MySQL e funfou!

Valeu!

Agora vou instalar aqui o MySQL Server…

Abraço!