Problemas com execução do jar fora do netbeans

3 respostas
V

Prezados, boa noite!

Tenho que realizar um pequeno formulário de cadastro usando o banco de dados Access (sim é a unica ferramenta que me disponibilizaram). O problema é que quando rodo no netbeans a aplicação faz o cadastro sem problermas, funciona do jeito que eu quero. mas quando eu compilo e executo pelo JAR não realiza o cadastro.

Alguem já pssou por isso, podem me ajudar?

Já tive muitos problemas rsolvidos aqui nas postagens do forum, mas essa é a primeira vez que eu posto uma duvida.

segue abaixo o meu comando insert.

public void setCadastrar(){
  try{


        String comando = "INSERT INTO CADASTRO_PENDENTE1  "+
//" 	(COD_CADASTROS,     "+ 
" 	(CUSTOMER,           "+
" 	NOME_CLIENTE,       "+
" 	PROTOCOLO_ABERTURA, "+
" 	DATA_ABERTURA,      "+
" 	REGIONAL,           "+
" 	VENCIDO,            "+
" 	PROBLEMA            "+
" 	) "+
" 	VALUES "+
//" 	(16,  "+
" 	(?,  "+
" 	?,  "+
" 	?,  "+
" 	?,  "+
" 	?,  "+
" 	?,  "+
" 	?  "+
" 	); "
;

        System.out.println("Executando operação...");

        PreparedStatement stmt = (PreparedStatement) ClassConecta2.con.prepareStatement(comando);
        
        
//        String oDataCadastro = null;
//        if (getData_abertura() != null){
//          SimpleDateFormat oDatOut = new SimpleDateFormat("yyyy-MM-dd");
//          oDataCadastro = oDatOut.format(getData_abertura());
//        }

        stmt.setInt(1, getCustomer());
        stmt.setString(2, getNome_clientes());
        stmt.setString(3, getProtocolo());
        stmt.setString(4, getData_abertura());
        stmt.setString(5, getRegional());
        stmt.setString(6, getVencido());
        stmt.setString(7, getDescricao());

        stmt.execute();
        
        ClassConecta2.con.commit();
        ClassConecta2.con.setAutoCommit(true);
        
        JOptionPane.showMessageDialog(null, "Cadastrado com sucesso");

   

        //System.out.println("Transação Concluída");
        //JOptionPane.showMessageDialog(null, "Transação Concluída", "ATENÇÃO", JOptionPane.WARNING_MESSAGE);
        }catch(Exception e){
            System.err.println("Erro na Transação\n"+e);
            JOptionPane.showMessageDialog(null, "Erro na Transação\n"+e, "ATENÇÃO", JOptionPane.ERROR_MESSAGE);

        }
}

******************************************************************************************************

abaixo segue o comando para enviar para a classe

private void salvarjButtonActionPerformed(java.awt.event.ActionEvent evt) {                                              
        // TODO add your handling code here:
            salvarjButton.setEnabled(false);
            novojButton.setEnabled(true);
            editarjButton.setEnabled(true);
            
            
            CadastroPendentes oPendentes = new CadastroPendentes();

            
            oPendentes.setCustomer(Integer.parseInt(customerjTextField.getText()));
            oPendentes.setNome_clientes(nomeClientejTextField.getText().trim().toUpperCase());
            oPendentes.setProtocolo(protocoloAberturajTextField.getText());
            oPendentes.setData_abertura(datajFormattedTextField.getText());
            oPendentes.setRegional(regionaljComboBox.getSelectedItem().toString());
            oPendentes.setVencido(vencidojComboBox.getSelectedItem().toString());
            oPendentes.setDescricao(descricaojTextArea.getText());
            oPendentes.setCadastrar();
//        try {
//            ClassConecta2.con.commit();
////            ClassConecta2.con.setAutoCommit(true);
//        } catch (SQLException ex) {
//            Logger.getLogger(jFCadastroPendentes.class.getName()).log(Level.SEVERE, null, ex);
//            JOptionPane.showMessageDialog(null, "não cadastrado");
//        }
        
//        JOptionPane.showMessageDialog(null, "Cadastrado com sucesso");
           
        
    }

Desde já agradeço a ajuda.

3 Respostas

V

Gente, coloquei um jOptionpane em um catch e mostra que quando rodo pelo jar ele não encontra o drive odbc. O engraçado é que pelo netbeans ele encontra e não da erro. Alguem sabe como resolver isso?

P

Veja se não é por alguma Lib que não foi compilada (na hora de gerar o Jar).

Eu passei por esse problema…

Outra coisa é executar pelo Prompt de Comando para ver os erros…

java -jar NOMEDOSISTEMA.jar

V

Problema resolvido.

Depois de ler muitos sites gringos, descobri que os drives so access 2010 não tem suporte para o java 7 e 8.

Resolvi o problema usando a biblioteca ucanaccess.
Ao baixar a biblioteca, ira vir barias outras dentro e para incluir no classpath para quem usa netbeans, tem que clicar com o botão direito e depois em ADICIONAR JAR/PASTA e colocar todas as bibliotecas e também a ucanacces.

abaixo segue um modelo da classe conecta para ajudar na configuração.

public class ClassConecta {
    

  public static Connection con = null;
 
 
     public static java.sql.Connection getConnection() throws SQLException {
        String driver = "net.ucanaccess.jdbc.UcanaccessDriver";
        
        String url = "jdbc:ucanaccess://\\\\spws-vm-fs02/sky/sky/siebel/note/1 - AGENTES - TORRE NACIONAL/1 - ATIVIDADES DIARIAS/BASE DE DADOS/CADASTRO_PEND_NOHSBD.accdb";
        
        String username = ""; //leave blank if none
        String password = ""; //leave blank if none    
        
        
        
        try {
      Class.forName(driver);
      con = DriverManager.getConnection(url, username, password);
      con.setAutoCommit(false);
      System.out.println("Conectado!");
      
     } catch (ClassNotFoundException e) {
         JOptionPane.showMessageDialog(null, "Erro na conexão\n"+e, "ATENÇÃO", JOptionPane.ERROR_MESSAGE);
         System.out.println(e);
     }
        try {
      return DriverManager.getConnection(url, username, password);
     } catch (SQLException e) {
      // TODO Auto-generated catch block
         JOptionPane.showMessageDialog(null, "Erro na conexão\n"+e, "ATENÇÃO", JOptionPane.ERROR_MESSAGE);
         System.out.println(e);
     }
     return con;
    }
}
Criado 3 de março de 2015
Ultima resposta 7 de mar. de 2015
Respostas 3
Participantes 2