NetBeans - não executa evento fora da IDE

11 respostas
Z

Bom dia pessoal! sou iniciante em java e estou com o seguinte problema ( já pesquisei e não descobri):
Tenho um projeto e criei um button para um evento de gravar dados no bd. Acontece que o evento só é executado no ambiente do IDE ( netbeans) e fora dela (dist) nem sinal de vida, de erro e nada ao clicar no button!
Porém no IDE funciona perfeitamente e grava os dados sem erros. Obs: segue o método:

Datas data_horario = new Datas(); // cria um nova variável do tipo data
        data_horario.ler_dataformatada();
        
        if (jTextField_nomeEmpregado.getText().equals("")) {  // se os campos estiverem vazios na gravação, interronpe e envia uma mensagem de erro
            JOptionPane.showMessageDialog(null, "Selecione um Funcionário!");
            
            if( jTextField_certificadoEpi.getText().equals("")){
              JOptionPane.showMessageDialog(null, "Selecione um Epi!");  
            }
            
        } else { // se houver dados corretos segue a gravação

            try {
                conex_bd.executeSQL("SELECT * FROM EPI ");
                
                String inserir = "INSERT INTO EPI (EPI_NOME,C_APROV,UNIDADE,QUANTIDADE,TAMANHO,DATA_ENTREGA,DATA_BAIXA,COD_UTILIZACAO,MATRICULA_EMPREGADO) VALUES "
                        + "('" + jComboBox_EpiFuncionario.getSelectedItem()
                        + "','" + jTextField_certificadoEpi.getText()
                        + "','" + jTextField_unidadeEpi.getText()
                        + "','" + jSpinner_quantidadeEpi.getValue()
                        + "','" + jTextField_tamanhoEpi.getText()
                        + "','" + data_horario.dataformatada
                        + "','" + data_horario.dataformatada
                        + "','" + jComboBox_Cod_Utilizacao.getSelectedItem()
                        + "','" + jTextField_Matricula.getText() + " ' )";

                conex_bd.statement.executeUpdate(inserir);

                JOptionPane.showMessageDialog(null, "Gravação realizada!");


            } catch (SQLException erro) {
                JOptionPane.showMessageDialog(null, "Selecione um Funcionário e um Epi!" +erro);
            }

            conex_bd.executeSQL("SELECT * FROM EPI ");
            preencher_TabelaEpi(jTable_epi); // atualiza a tabela      

        //if( evt.getSource() == jButton_adicionarEpi) { 
       // if (evt.getSource() == jButton_adicionarEpi) {

Grato por alguma sugestão!

11 Respostas

romarcio

Faz o seguinte, executa o seu arquivo .jar pelo console do DOS.

Abre o console e vá até o diretório que contém o arquivo .jar do seu projeto e então digite: java -jar seuarquivo.jar
Assim, se existir algum erro em tempo de execução, será descrito no console, dai você copia e posta ele.

R

Posta o codigo da classe de conexao, e o resto do codigo do actionPerformed do button.

Ja adiantando algo, verifique no codigo onde voce pega o driver do bd, pois no Netbeans, ele é registrado no classpath do projeto, so que no JAR, standalone, isso pode ta em outro lugar especificado por voce mesmo, voce tem que especificar onde ele se encontra, estou chutando somente, se for isso ou nao, faca o que o amigo acima falou, execute no prompt e poste a excecao aqui.

Z

Valeu pessoal pela ajuda: Segue o erro… Detalhe: ele não dá mensagem de erro ao executar o banco de dados com outros eventos, somente um evento que possui essa classe Datas.

C:\Users\Flávio\Desktop\EpiControl>java -jar EpiControl.jar Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: Utilitari os/Datas at epicontrol.TelaInicio.jButton_adicionarEpiActionPerformed(TelaInicio. java:1182) at epicontrol.TelaInicio.access$800(TelaInicio.java:22) at epicontrol.TelaInicio$11.actionPerformed(TelaInicio.java:347) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Sour ce) at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$200(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour ce) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour ce) at java.awt.EventQueue$4.run(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour ce) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) Caused by: java.lang.ClassNotFoundException: Utilitarios.Datas at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 40 more

Z
Segue a classe Datas
package Utilitarios;

import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
import java.text.SimpleDateFormat;


 public class Datas // classe
{
  public String mes,dia,ano,dia_semana, hora, dataformatada,datarelatorio; // variáveis são publicas

  public void ler_hora() // método: HORA NO PADRÃO "HH:mm:ss" 
  {
    SimpleDateFormat hora_formatada = new SimpleDateFormat("HH:mm:ss");
    Date hora_Atual = new Date();
    hora = hora_formatada.format(hora_Atual);
  }
 
 public void ler_datarelatorio() // método: DATA DO PADRÃO "yyyy-MM-dd" para Relatorio
  {
     SimpleDateFormat data_formatada = new SimpleDateFormat("yyyy-MM-dd");
      Date data_atual = new Date();
      datarelatorio = data_formatada.format(data_atual);
  }


  public void ler_dataformatada() // método:  DATA DO PADRÃO "dd/MM/yyyy"
  {
      DateFormat data_formatada = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");    
      Date data_atual = new Date();   
      dataformatada = data_formatada.format(data_atual);
  }

  public void  ler_data()//método:  DATA NO PADRÃO "02/MARÇO/2011"
  {
      Date data = new Date();
      
      dia = ""+data.getDate();
      ano = ""+(1900+ data.getYear());
     
      //mes = ""+data.getMonth();// o até 11

              switch(data.getMonth())
      {
          case 0 : mes = "Janeiro"; break;
          case 1 : mes = "Fevereiro"; break;
          case 2 : mes = "Março"; break;
          case 3 : mes = "Abril"; break;
          case 4 : mes = "Maio"; break;
          case 5 : mes = "Junho"; break;
          case 6 : mes = "Julho"; break;
          case 7 : mes = "Agosto"; break;
          case 8 : mes = "Setembro"; break;
          case 9 : mes = "Outubro"; break;
          case 10 : mes = "Novembro"; break;
          case 11 : mes = "Dezembro"; break;
      }

       //dia_semana = ""+data.getDay();
       switch(data.getDay())
       {
          case 0 : dia_semana = "Domingo"; break;
          case 1 : dia_semana = "Segunda-feira"; break;
          case 2 : dia_semana = "Terça-feira"; break;
          case 3 : dia_semana = "Quarta-feira"; break;
          case 4 : dia_semana = "Quinta-feira"; break;
          case 5 : dia_semana = "Sexta-feira"; break;
          case 6 : dia_semana = "Sábado"; break;
          }
      }

  
    public  void diferenca_data()
    {
       SimpleDateFormat sdf = new SimpleDateFormat("dd/mm/yyyy");
       try {
          Date date1 = sdf.parse("05/09/2003");
          Date date2 = sdf.parse("06/09/2003");
          long differenceMilliSeconds = date2.getTime() - date1.getTime();
          // System.out.println("diferenca em milisegundos: " + differenceMilliSeconds);
          //System.out.println("diferenca em segundos: " + (differenceMilliSeconds/1000));
          //System.out.println("diferenca em minutos: " + (differenceMilliSeconds/1000/60));
          //System.out.println("diferenca em horas: " + (differenceMilliSeconds/1000/60/60));
          System.out.println("diferenca em dias: " + (differenceMilliSeconds/1000/60/60/24));

       } catch (ParseException e) {
      }
   }

}
romarcio
Essa classe parece não existir dentro do seu arquivo .jar
Volte para a linha de comando e execute: jar -tf EpiControl.jar
Será listado todo o conteúdo de seu arquivo .jar, confira se a classe Datas está na lista.

Essa classe parece não existir dentro do seu arquivo .jar
Volte para a linha de comando e execute: jar -tf EpiControl.jar
Será listado todo o conteúdo de seu arquivo .jar, confira se a classe Datas está na lista.

Z

Não aceitou o comando:

C:\Users\Flávio\Desktop\EpiControl>jar -tf EpiControl.jar
'jar' não é reconhecido como um comando interno
ou externo, um programa operável ou um arquivo em lotes.

C:\Users\Flávio\Desktop\EpiControl>java -tf EpiControl.jar
Unrecognized option: -tf
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
romarcio

Deveria ter aparecido algo assim:

C:\Odontologico\dist>jar -tf Odontologico.jar META-INF/ META-INF/MANIFEST.MF br/ br/odontologico/ br/odontologico/Agendamento.class br/odontologico/AgendamentoDB.class br/odontologico/AgendamentoFrame$1.class br/odontologico/AgendamentoFrame$2.class br/odontologico/AgendamentoFrame$3.class br/odontologico/AgendamentoFrame.class br/odontologico/FormataData.class br/odontologico/Odontologico$1.class br/odontologico/Odontologico.class br/odontologico/PesquisaConsultaFrame$1.class br/odontologico/PesquisaConsultaFrame$2.class br/odontologico/PesquisaConsultaFrame$3.class br/odontologico/PesquisaConsultaFrame.class >

Z

Romarcio,
não sei se ajuda, mas mandei criar o javadoc e a classe Datas e todas a outras estão certinho lá dentro do pacote Utilitários. Engraçado é que ele executa normalmente na IDE.

romarcio

Você pode descompactar o seu .jar usando o winrar por exemplo, dai pode confirmar se todas as classes estão dentro do arquivo.

Z

Romarcio, tá tudo lá!
dentro de Utilitarios :
Conexaobd.class
Datas.class

Mudei as configurações de compilação e apareceu esses erros aqui:

D:\Projetos NetBeans\EpiControl\src\Utilitarios\Datas.java:43: warning: [deprecation] getDate() in Date has been deprecated
      dia = ""+data.getDate();
D:\Projetos NetBeans\EpiControl\src\Utilitarios\Datas.java:44: warning: [deprecation] getYear() in Date has been deprecated
      ano = ""+(1900+ data.getYear());
D:\Projetos NetBeans\EpiControl\src\Utilitarios\Datas.java:48: warning: [deprecation] getMonth() in Date has been deprecated
              switch(data.getMonth())
D:\Projetos NetBeans\EpiControl\src\Utilitarios\Datas.java:65: warning: [deprecation] getDay() in Date has been deprecated
       switch(data.getDay())
Note: D:\Projetos NetBeans\EpiControl\src\epicontrol\TelaInicio.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
4 warnings
Z

Pois é pessoal, descobri qual erro: ocorre toda vez que uso algum método da classe Datas…
Agora, como faço para atualizar essa classe?

Criado 17 de novembro de 2012
Ultima resposta 17 de nov. de 2012
Respostas 11
Participantes 3