Posts Categorizados ‘java

06
Ago
09

“Cannot connect to VM”

Uma coisa estranha aconteceu hoje, e por isto estou fazendo uma pausa na preguiça de escrever algo.

Eclipse IDE

Eclipse IDE

Durante um dia normal de pesquisa, em uma reunião onde tentávamos entender o código de um projeto open source, o Eclipse Ganymede que ele utilizava no Linux estava com um problema para executar o Debug. Toda vez que tentava executá-lo, aparecia um dialog informando:

“Cannot connect to VM”.

Estranhamos. Olhando nas configurações de JRE utilizadas, estava tudo ok, e o problema apresentava-se somente no Debug, e não na compilação/execução de programas. Apresentava também, na área “Problems”, um problema com um getthisbyname(). Estranhei. Não estaria resolvendo o nome de que, se ao testarmos só estava tentando rodar um “Hello World”? A única máquina que estaria tentando alcançar seria ela mesma: localhost. Resolvemos olhar o arquivo /etc/hosts (que guarda algumas pré-configurações de hosts em UNIX):

#127.0.0.1   localhost
127.0.0.1   xxx-notebook
#outras configurações de hosts

Para os desavisados, em arquivos de configuração UNIX é comumente utilizado o # como símbolo para comentário de linha. Logo, aparentemente devido ao fato de estar comentado, o Eclipse (ou a função getthisbyname() de Java) não conseguia resolver o nome localhost para 127.0.0.1. Removido o comentário, o Debug do Ganymede passou a funcionar perfeitamente.

Interessante, não?

08
Dez
08

Cartões de Referência

Referências rápidas

Referências rápidas


Deixando aqui um achado bem interessante, não feito por mim mesmo, mas que eu vi no Br-Linux. Eu pretendo usá-lo como reforço de memória, pois volta e meia esqueço onde encontrar fontes interessantes.

O que encontrei foi uma página de cartões de referência rápida para vários assuntos: Linguagens de programação(várias), UML, Web, ferramentas de documentação, gerenciadores de versões, Linux e diversos programas comuns, etc. Achei legal e gostaria de deixar compartilhado para quem achar útil.

Dando mais uma olhadinha na Wikipedia encontrei o mesmo link, além de alguns outros, aparentemente mais poderosos e vastos. Valem a pena dar uma olhada.

Link para as páginas aqui, aqui e aqui.
Achei a notícia aqui.

03
Mai
08

Um aplicativo trivial em Java

Com meu tempo atribulado, hoje tive uma iluminação:

Preciso de algo para gerenciar melhor meu tempo durante o dia… já sei, vou fazer um temporizador!

Isso, e pelo fato da água da chaleira ferver demais e eu ter que re-enxê-la para fazer café. Muito chato isso – mesmo. Fui até o Eclipse, e comecei a digitar.

Quero algo em formato de pop-ups, que aparecem na tela e me diga: “Ei, hora disso.”

Pop-ups.. hum… Poderiam ser Dialogs? Surgiu uma idéia simples:

Começando com uma classe simples, chamemo-a Main.

public class Main{
}

Para podermos chamar fácil Dialogs de opções a partir dela, podemos acrescentar algo: herdando de JFrame, fica fácil de usá-la como componente pai de um Dialog de JOptionPane. Começamos a fazer sua classe principal também:

public class Main extends JFrame{
    public static void main(String[] args){
       Main m = new Main();
       m.setVisible(false);
   }
}

Ok, agora já temos um JFrame invisível. A partir deles vamos abrir pop-ups. Podemos ter um para saber quantos minutos você quer esperar, e outro para saber que mensagem ele deve retornar para lhe lembrar do que era para ser feito. Finalmente teremos um que indicará que passou o tempo.

public class Main extends JFrame{
   public static void main(String[] args){
      Main m = new Main();
      m.setVisible(false);

      String tempo = JOptionPane.showInputDialog(m,"Digite o tempo de espera");
      if(tempo==null){
      //caso da janela ser cancelada ou fechada.
        System.exit(0);
      }

      tempo=tempo.trim();
      int minutos = Integer.parseInt(tempo);

      String mensagem = JOptionPane.showInputDialog(m,
                                     "Digite a mensagem de alerta!");

      Thread.sleep(minutos*60*1000);

      JOptionPane.showMessageDialog(m,mensagem);
      m.dispose();
      System.exit(0);
      }
   }
}

O programa todo é mais ou menos isso. Na chamada de Thread.sleep, a multiplicação é feita para passar de minutos para milissegundos, medida de tempo que ele usa. Claro, algumas exceções devem ser verificadas: NumberFormatException e InterruptedException, para o parseInt e o sleep, respectivamente. Podemos florear também o retorno um pouco. O código final fica assim:

public class Main extends JFrame{
  public static void main(String[] args){
    Main m = new Main();
    m.setVisible(false);

    try{
      String tempo = JOptionPane.showInputDialog(m,"Digite o tempo de espera");
      if(tempo==null){
      //caso da janela ser cancelada ou fechada.
        System.exit(0);
      }

      tempo=tempo.trim();
      int minutos = Integer.parseInt(tempo);

      String mensagem = JOptionPane.showInputDialog(m,
                                      "Digite a mensagem de alerta!");

      Thread.sleep(minutos*60*1000);

      JOptionPane.showMessageDialog(m,mensagem,"Passados "+tempo+" minutos!!!",
                        JOptionPane.WARNING_MESSAGE);
      } catch(NumberFormatException e){
         JOptionPane.showMessageDialog(m, "Use somente "+
                 " números inteiros para o tempo!!!");
      } catch(InterruptedException e){
         JOptionPane.showMessageDialog(m, e.getMessage());
      } finally{
         m.dispose();
         System.exit(0);
      }
    }
  }
}

Quanto à dependências dos pacotes, só precisa do JFrame e do JOptionPane – nada que um Ctrl+Shift+O não resolva.

Isso, em uma classe só, é um aplicativo trivial e funcional o suficiente para eu ter me viciado nele. Já virei escravo dele para tudo que preciso. E não me preocupo mais que a água da chaleira evapore toda.

Entrada do tempo do temporizadorEntrada de mensagemRetorno do temporizador




X-Files

 

Novembro 2009
S T Q Q S S D
« Out    
 1
2345678
9101112131415
16171819202122
23242526272829
30  

Estatísticas:

  • 3,558 erros de pesquisa

Tweet! :>

last.fm

Join the Free Software Foundation!

Support freedom