Erro de driver ao rodar arquivo jar [RESOLVIDO]

Olá pessoal,

Criei um aplicativo Java Swing que simplesmente testa uma conexão com uma base de dados SQLServer.
Depois de concluir eu gerei o arquivo JAR, porém quando o cliente roda a aplicação, é gerado um erro relacionado a Driver.

Desenvolvi o aplicativo no Eclipse.
O que eu esqueci de fazer?

Grato.

Esqueceu de postar o erro.

Erro que estou recebendo:

no suitable driver found for jdbc:sqlserver://localhost:...........

Porém eu adicionei o jar corretamente, tanto que quando eu rodo a aplicação pelo Eclipse eu não recebo o erro, o erro somente acontece quando eu tento rodar o jar da minha aplicação gerado pelo Eclipse.

Grato.

Há uma diferença entre ClassNotFoundException e No suitable driver found for…
A primeira é referente à problemas com a existência da classe no classpath. A outra é referente à um erro nos dados de conexão, em específico, o formato da URL de conexão.

Certo,

Mas se eu executo no eclipse eu não recebo nenhum erro, agora se eu crio o jar dessa aplicação, quando o cliente executa ele recebe esse erro.
drsmachado, vc tem idéia do que possa estar acontecendo?

Grato.

Como está o código?

drsmachado

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package verificadorconectividade;

import java.sql.Connection;
import java.sql.DriverManager;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

public class ConexaoRemotaController {
    private ConexaoRemota conexaoRemota;
    
    public ConexaoRemotaController(ConexaoRemota conexaoRemota) {
        this.conexaoRemota = conexaoRemota;
    }   
    
    public boolean conectar() {
        
        try {
            
            String driver = "net.sourceforge.jtds.jdbc.Driver";
            
            Class.forName(driver).newInstance();
            //Montagem da url de conexao com a base de dados            
            String url =  "jdbc:jtds:sqlserver://" + conexaoRemota.getIp() + ":" + conexaoRemota.getPorta() + "/" + conexaoRemota.getNomeBanco();
            System.out.println("url: " + url);
            Connection conn = DriverManager.getConnection(url, conexaoRemota.getUsuarioBanco(), conexaoRemota.getSenhaBanco());
            
            if (conn != null && !conn.isClosed()) {
                return true;
            }
            
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "ex.getMessage(): " + ex.getMessage());            
            Logger.getLogger(ConexaoRemotaController.class.getName()).log(Level.SEVERE, null, ex);
        }   
        
        return false;
    }
        
}

Grato.

Eu não gosto desta abordagem

public ConexaoRemotaController(ConexaoRemota conexaoRemota) {  
        this.conexaoRemota = conexaoRemota;  
    }  

Mesmo por que, não sei o que existe em conexaoRemota.
O ideal seria que você tivesse um arquivo .properties de onde pudesse ler estas informações.

isso existe porque a “conexaoRemota” é dinâmica.

Grato.

[quote=me]isso existe porque a “conexaoRemota” é dinâmica.

Grato.[/quote]
E provavelmente esta natureza “dinâmica” esteja causando o problema.
Note que a exceção que você recebe está associada ao fato de que a URL de conexão tem formato diferente do esperado que é

jdbc:<CONEXAO>://<HOST>:<PORTA>/<SCHEMA>

Algum dos parâmetros
CONEXAO
HOST
PORTA
SCHEMA
Está incorreto ou ausente.

Resolvido,

O problema era o seguinte:
(Eu estava gerando o jar pelo netbeans.)

O netbeans além do jar, gera um outro arquivo chamado lib contendo os jar’s que são dependentes do jar principal, eu estava enviando para o cliente apenas o jar do projeto, consequentemente recebia o erro acima, então depois de muito pesquisar descobri que tinha que enviar alem do jar principal o diretório lib contendo as bibliotecas que foram embutidas no projeto em design time.

(obs: na verdade eu ja tinha resolvido esse problema a algum tempo, mas achei importante postar).

Obrigado drsmachado.