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?
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.
drsmachado
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.
me1
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.
drsmachado
Como está o código?
me1
drsmachado
/* * To change this template, choose Tools | Templates * and open the template in the editor. */packageverificadorconectividade;importjava.sql.Connection;importjava.sql.DriverManager;importjava.util.logging.Level;importjava.util.logging.Logger;importjavax.swing.JOptionPane;publicclassConexaoRemotaController{privateConexaoRemotaconexaoRemota;publicConexaoRemotaController(ConexaoRemotaconexaoRemota){this.conexaoRemota=conexaoRemota;}publicbooleanconectar(){try{Stringdriver="net.sourceforge.jtds.jdbc.Driver";Class.forName(driver).newInstance();//Montagem da url de conexao com a base de dados Stringurl="jdbc:jtds:sqlserver://"+conexaoRemota.getIp()+":"+conexaoRemota.getPorta()+"/"+conexaoRemota.getNomeBanco();System.out.println("url: "+url);Connectionconn=DriverManager.getConnection(url,conexaoRemota.getUsuarioBanco(),conexaoRemota.getSenhaBanco());if(conn!=null&&!conn.isClosed()){returntrue;}}catch(Exceptionex){JOptionPane.showMessageDialog(null,"ex.getMessage(): "+ex.getMessage());Logger.getLogger(ConexaoRemotaController.class.getName()).log(Level.SEVERE,null,ex);}returnfalse;}}
Grato.
drsmachado
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.
me1
isso existe porque a “conexaoRemota” é dinâmica.
Grato.
drsmachado
me:
isso existe porque a “conexaoRemota” é dinâmica.
Grato.
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.
me1
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).