JDBC - não encontra driver

6 respostas
R

gente, seguinte:

criei uma aplicação standalone que precisa acessar dois servidores SQLServer através de JDBC.
Já tenho o driver JDBC, inclusive funciona direitinho com o TomCat instalado na máquina, mas não na aplicação standalone.
Ocorre o erro de driver não encontrado:

java.sql.SQLException: No suitable driver
	at java.sql.DriverManager.getConnection(Unknown Source)
	at java.sql.DriverManager.getConnection(Unknown Source)

O problema é que o programa vai ser instalado em várias máquinas, e ninguém quer ficar configurando classpath em nenhuma delas, e nem posso definir um path fixo pq o local de instalação do programa vai variar de máquina para máquina.
Já tentei colocar os JAR na pasta bin do aplicativo, mas não funciona.
Alguém já conseguiu fazer funcionar desse jeito?
[/code]

6 Respostas

M

rashi, inicialmente tais utilizando que banco de dados, cada máquina vai ter o seu próprio banco ou vai ser centralizado ?
Tais registrando o drive antes de dar o “getConnection” ?

Abraço,
Maicon

R

O banco de dados vai ser centralizado sim.

aqui vai o pedaço de código que tá causando o erro:

public Connection AbreConexao(int origem) throws Exception
	{
		String user = "";
		String senha = "";
		String endereco = "";
		
		int contador = 0;
		try	{
			
			Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
		}catch (Exception e){}

		try 
		{ 
			FileReader f=new FileReader("config.ini"); 
			BufferedReader in=new BufferedReader(f); 
			String s; 
			while((s=in.readLine())!=null) 
			{ 
				contador++;
				if (contador==1&&origem==1){
					//primeira linha do arquivo, primeiro DB
					StringTokenizer stLinha = new StringTokenizer(s,"|");
						endereco = stLinha.nextToken();
						user = stLinha.nextToken();
						senha = stLinha.nextToken();
				}else if(contador==2&&origem==2){
					//segunda linha do arquivo
					StringTokenizer stLinha = new StringTokenizer(s,"|");
						endereco = stLinha.nextToken();
						user = stLinha.nextToken();
						senha = stLinha.nextToken();
				}
			}
		}catch(Exception e){}

		try	{
			conn = DriverManager.getConnection("jdbc:microsoft:sqlserver:"+endereco,user,senha);
		}catch (Exception e){ throw e;}

		return conn;		
	}

só que, no TomCat esse código sempre funcionou.
Se eu vou no Eclipse, nas propriedades do projeto, e incluo as bibliotecas, funciona.
Quando gero o JAR não funciona, mesmo com os endereços corretos no arquivo .classpath, e na variável de ambiente CLASSPATH.

tah ficando difícil a coisa :confused:

M

rashi, eu daria uma idéia só pra teste.
Põe o conteúdo do que tem no jar do driver do DB junto com o teu jar, provavelmente deve funcionar. Resumindo descompacta tudo e põe tudo num jar só… :smiley: Quem sabe dá certo !

Se der certo então é o classPath mesmo, vais ter que rever, mas faça este teste antes.

Abraço,
Maicon

R

Desculpa a ignorância mas,

como é que descompacto um JAR???

M

com winzip ou winrar…
na verdade um jar é um zip com extensão modificada.
se preferir vc até pode renomear de file.jar para file.zip que tá blz.

Abraço,
Maicon

R

Resolvido :slight_smile:

Foi só colocar as JARs numa pasta chamada chamada lib dentro da pasta onde esta a JAR do programa, e incluir o arquivo manifest:

Manifest-Version: 1.0
Main-Class: Telefonia
Class-Path: lib\mssqlserver.jar lib\msbase.jar lib\msutil.jar

daí funcionou beleza :slight_smile:

Criado 5 de outubro de 2004
Ultima resposta 8 de out. de 2004
Respostas 6
Participantes 2