JDBC e CLASSPATH

Oi a todos…

Desenvolvi uma aplicação Swing que acessa uma base SQL Server 2000. Acontece que quando rodo a aplicação no Eclipse blz. Depois de criado o JAR, não roda nem a pau!!!. Já tou a dois dias (incluindo o feriado) revirando o classpath, o código, os foruns, os manuais e NADA!!! A Aplicação carrega mas não acha os drivers do SQL. O classpath está certinho, os .jar estão no lugar e a bagaça não rola… :evil:

Será que algúem pode ajudar?

Valeu…

Olá

Se você tem certeza de que fez tudo de acordo com as instruções de instalação, de que seu driver corresponde à versão do SQL Server e que o o seu script de execução está com parâmetro -cp correto, então passo uma sugestão só para funcionar:
Coloque o jar do driver no diretório %JAVA_HOME%\jre\lib\ext

[]s
Luca

Oi Luca.

Já tentei isso também cara. Já tô na neurose achando que m… da grossa em algum lugar.

Olá

Duas hipóteses:

  1. Refaça todos os passos;

  2. Mostre aqui tudo o que fez.

[]s
Luca

Qual erro?

Oi a todos…

Numa ultima e desesperada tentativa, tentei rodar a linha de comando que o Eclipse gera e… pimba.
Acontece que o parametro -cp da linha de comando é exatamente igual ao CLASSPATH da minha maquina !!!. O que será que acontece :?:

De qualquer maneira fica a solução para a galera que tiver o mesmo problema!!!

Valew ai pessoal…

Olá

Qual problema? Você não mostrou nada.

E não sei o que faz esta variável CLASSPATH dentre as suas variáveis de ambiente. Desde o j2sdk 1.2 que isto não é mais necessário. O correto é usar -cp no arquivo .bat ou no build.xml do ant que executa cada aplicação, nunca esquecendo de incluir o atual diretório ( .;\qqdir;\outrodir ). Ou será que na sua máquina só roda uma única aplicação Java?

[]s
Luca

Oi Luca…

O problema é que tou meio que chegando agora no JAVA, e até agora, para mim o CLASSPATH era algo que obrigatório…
Estou postando o conteudo p/ vc dar um look.

CLASSPATH=.;C:J2SDKin;c:/Arquivos de programas/SQL 2000 JDBC/lib/msbase.jar;c :/Arquivos de programas/SQL 2000 JDBC/lib/msutil.jar;c:/Arquivos de programas/SQ L 2000 JDBC/lib/mssqlserver.jar;

Olá

Olhando bem rápido, acho que diretórios com espaços nos nomes devem estar dentro de aspas ("c:/Arquivos de programas/SQL 2000 JDBC/lib/msbase.jar") fora que no Windows as barras devem ser invertidas (“c:[b][/b]Arquivos de programas[b][/b]SQL 2000 JDBC[b][/b]lib[b][/b]msbase.jar”)

Repito a dica, não use a variável de ambiente CLASSPATH. Estude como o Java localiza as classes e crie para cada programa um script de execução. Veja exemplos nos arquivos .bat do diretório bin do tomcat.

[]s
Luca

No classpath ou com o parâmetro -cp tanto faz usar / ou \ . O grande problema é a gente se perder com os nomes de diretórios muito grandes e com espaços, que requerem sempre as aspas, nem sempre em lugares muito evidentes.
Por exemplo, você tem de usar algo como

java -cp "c:\Arquivos de programas\SQL 2000 JDBC\lib\msbase.jar; etc..." etc. etc. etc

ou

java -cp "c:/Arquivos de programas/SQL 2000 JDBC/lib/msbase.jar; etc..." etc. etc. etc

mas setar o CLASSPATH via linha de comando é muito sutil porque o comando certo NÃO É

set CLASSPATH="c:\Arquivos de Programas\bla bla bla"MAS SIM

set "CLASSPATH=c:\Arquivos de Programas\bla bla bla"OU

set CLASSPATH=c:\Arquivos de Programas\bla bla bla

Como se vê, eu realmente não gosto da variável de ambiente CLASSPATH por causa dessas sutilezas. Prefiro usar java -classpath ou java -cp.

Como eu sou muito muito muito preguiçoso, normalmente eu copio todos esses JARs que preciso para um único diretório C:JARS, e faço tudo a partir de lá.

Se houver algum problema com versão, então crio algum subdiretório em C:\JARS, mas novamente sem espaços (tal como C:\JARS\Oracle9i )

Dica: quando alguma coisa foi criada no Unix, como é o caso do Java, normalmente alguma ferramenta que se usa com ele pode ter problemas com espaços em nomes de arquivos e diretórios. O Java.exe e o Javac.exe não têm problemas com espaços (se você não esquecer de pôr direitinho as aspas), mas não é bom “dar sorte pro azar”, como se diz por aí.

Vc tá colocando os jars no classpath do manifest do seu jar?

[]'s