Duvidas com o classpath

Dai galera!

Estava aqui fazendo um programinha que acessa banco de dados MySql e encontrava o seguinte erro toda vez que fazia ela rodar:

com.mysql.jdbc.Driverjava.lang.ClassNotFoundException:com.mysql.jdbc.Driver

Eu estava seguindo os passos de um livro que tenho aqui: baixei o driver, descompactei, movi o diretorio com\mysql\jdbc\ para a pasta lib do j2sdk mas nao funcionava. Resolvi entao fazer o seguinte: peguei esse mesmo diretorio e movi para a pasta lib da minha aplicaçao e para minha surpresa o erro desapareceu! Posteriormente fiz outro teste colocando soh o .jar do driver dentro da mesma pasta mas dai nao funcionou. :cry:
Para tentar entender o que estava ocorrendo imprimi o conteudo do classpath com o seguinte codigo(unica maneira possivel de ver o classpath?):

String classpath = System.getProperty("java.class.path",".");
System.out.println(classpath);

Nao encontrei nele o caminho do diretorio lib do j2sdk, porem encontrei o caminho do lib da minha aplicaçao, alguma coisa errada nisso?
Tentei depois setar o .jar no classpath com o comando
set CLASSPATH=.;%CLASSPATH%;C:\mysql-connector-java-3.0.15-ga\mysql-connector-java-3.0.15-ga-bin.jar; soh que nao deu certo. :cry:
Alguem ai pode dar uma luz sobre configuraçao do classpath para essa criatura ignorante que vos escreve? :oops:

Fischer

nao sei se entendi direito o q vc escreveu. mas la vai…

quando vc move um conjunto de classes para a pasta lib, elas ‘entram para o classpath’, porem com arquivos jar isso nao acontece. É necessário colocar o caminho completo para o arquivo no classpath.

outra opção é colocar o arquivo jar na pasta jre/lib/ext

blz!?
:wink:

Caro Denis,

O meu problema ocorre justamente porque o que deveria funcionar nao esta funcionando!

1° - Eu movi a classe do Driver para o lib do j2sdk e nao funcionou desse jeito!
2° - Eu ja tentei colocar o caminho completo do .jar no classpath
(set CLASSPATH=.;%CLASSPATH%;C:\mysql-connector-java-3.0.15-ga\mysql-connector-java-3.0.15-ga-bin.jar;) e nao funcionou!
3° - Coloquei o .jar na pasta lib da minha aplicacao, dei o set classpath com o caminho dele nessa pasta (c:…\lib\mysql-connector-java-3.0.15-ga-bin.jar) e nao funcionou!

Entao eu nao sei o que ocorre. Eu seto essa porcaria, reinicio o pc, olho o classpath e nada eh acrescentado! O que pode estar errado, alem da peça que fica na frente do meu computador eh claro, hehehe :???:

Mesmo assim valew pela resposta! :wink:

Fischer

calma rapaz… não precisa se matar…

se vc estiver usando win 2000\XP:

Propriedades de Sistema\Avançado\Variáveis de Ambiente

dai vai em:

se vc tiver privilégios administrativos va em Variáveis de Sistema
se não, va em Variáveis de Usuário

ache a variavel classpath e adicione no final dela o valor: ;caminho_completo de_onde_esta_o_jar\pacote_jar.jar;

se não tiver a variavel classpath, crie e adicione: .;JAVA_HOME\lib;caminho_completo de_onde_esta_o_jar\pacote_jar.jar;

aí com certeza vai funcionar!

Bom, entao acho que nao o problema nao eh com variavel de ambiente porque ja fiz isso e o programa continua dando o erro java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver. Soh por via das duvidas vou postar as minhas variaveis e o trexo do programa onde o Driver eh lido.

JAVA_HOME -> c:\j2sdk1.4.2_05
PATH -> %PATH%;%JAVA_HOME%\bin
CLASSPATH -> .;JAVA_HOME\lib;c:\Java\jdbc\lib\mysql-connector-java-3.0.15-ga-bin.jar;

    public BaseDeDados() {
        
        try{
            
           Class.forName("org.gjt.mm.mysql.Driver");
           url = "jdbc:mysql://localhost/banco";
           usuario = "root";
           senha = "1234";
           con = DriverManager.getConnection(url,usuario,senha);
           stmt = con.createStatement();
            
        }
        
        //Driver nao encontrado
        catch(ClassNotFoundException e){
            
            System.err.print("Falha ao carregar driver");
            e.printStackTrace();
            
        }

O meu S.O. eh o W2K, o meu MySQL eh o mysql-4.0.21, o Apache eh o apache 1.3.31 e se alguem souber o que ha de errado por favor me avise. :oops:

Obrigado,

Fischer

Oi Fischer,

Na sua variável de classpath ta faltando o ‘%’ ao redor do ‘JAVA_HOME’ no classpath.

estou acostumado a fazer o classpath da seguinte forma:

CLASSPATH =%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;.;C:\Java\jdbc\lib\mysql-connector-java-3.0.15-ga-bin.jar

se vc utiliza win2k, entao nao precisa reiniciar para q as variaveis de ambiente sejam atualizadas!

vc pode tentar abrir esse arquivo jar utilizando algum programa q trabalhe com arquivos compactados (Winzip por exemplo) e verificar se essa classe está mesmo dentro desse jar.

vc pode tentar colocar o jar na pasta JAVA_HOME\jre\lib\ext (colocando nessa pasta, nao é preciso referenciar no classpath).

espero q agora vc consiga resolver seu problema :???:
:wink:

Denis,

Colocando na pasta JAVA_HOME\jre\lib\ext funcionou legal. Algum desvantagem nesse tipo de solução ou setar no classpath é melhor? Tentei de tudo quanto é jeito pelo classpath mas não funciona…

Mesmo assim muito obrigado,

Fischer