quinta-feira, 29 de abril de 2010

Netbeans 8: Classe principal do projeto não encontrada (no Main classes found)

Você já se deparou com a mensagem ao tentar compilar, de que não existe classe principal no seu projeto? Mas você tem certeza de que existe a classe até porque na última vez que você compilou ela estava lá e funcionando? E mesmo que você acesse as propriedades do projeto o Netbeans não identifica que existe uma classe principal.

Bom, esse me parece um problema do Netbeans 6.8 (pelo menos comigo nunca aconteceu isso antes e sou usuário desde a versão 5.0), para resolver o problema basta que você limpe o cache que o Netbeans cria no seu computador.

No meu caso, como sou usuário de linux (Ubuntu), basta apagar a pasta /home/{meu usuário}/.netbeans/6.8/var/cache

Pronto! Agora basta abrir novamente o Netbeans, carregar o projeto e tudo voltou a funcionar normalmente.

sábado, 20 de fevereiro de 2010

JTable - excluir linhas

Seguindo o modelo do post anterior (JTable - inserir linhas), para excluir linhas selecionadas de um JTable basta:


int[] l = projetos.getSelectedRows();
DefaultTableModel dtm = (DefaultTableModel) jTable1.getModel();
for (int i = (l.length - 1); i >= 0; --i) {
     dtm.removeRow(l[i]);//remove todas as linhas selecionadas
}


Mumu....

JTable - inserir linhas

Depois que você inserir o JTable no seu projeto para inserir linhas basta:

1) Recuperar o tablemodel do jtable e fazer um cast para um DefaultTableModel:
DefaultTableModel dtm = (DefaultTableModel) jTable1.getModel();

2) Inserir a nova linha no "dtm":
dtm.addRow(new Object[]{"", "", "", ""});   // um "" para cada coluna que existir

Fácil não?!?

sexta-feira, 16 de outubro de 2009

MySQL: salvando resultado de select em arquivo

Você alguma vez já precisou salvar o resultado de um select feito no banco de dados para um arquivo para enviar a alguém?

O comando abaixo faz exatamente isso...

SELECT campo1, campo2 FROM tabela WHERE campoN="XYZ" INTO OUTFILE '/tmp/nome_arquivo.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';


Entendendo o comando:

SELECT, FROM, WHERE: sem comentários, se você não sabe o que significa isso então nem continue lendo rsrsrsrsrs

INTO OUTFILE: path e nome do arquivo que será gerado
FIELDS TERMINATED BY: é o separador dos campos, no exemplo acima é a vírgula
ENCLOSED BY: os campos serão colocados entre o caractér definido neste parâmetro, no caso do exemplo são  áspas duplas
LINES TERMINATED BY: quebra de linha (enter)




[]'s

segunda-feira, 12 de outubro de 2009

Preparatório para Certificação SCJP (Sun Certified Java Programmer)

Se você está interessado em tirar uma certificação java (SCJP) esse site pode lhe interessar:

http://www.javaead.com.br

Nele você encontrará material de estudo, forum e chat.

[]'s

domingo, 11 de outubro de 2009

Ajudar não custa nada...

Sou usuário do Ubuntu desde a versão 7.xx e gosto muito desse sistema operacional, embora não seja adepto a instalar jogos no meu notebook acho importante que se tenha um programa como o que foi desenvolvido para instalação de jogos, então uma forcinha não custa nada...

"Promoção ajude o ubuntu games a se manter no ar e concorra a 3 camisas do blog defendendoolinux no dia 30/10, para participar é simples copie e cole todo esse texto entre aspas, preservando a formatação html no seu blog e deixe um comentario nesse link com o link para a sua postagem. Além disso o defendendoolinux fará uma doação em dinheiro ao projeto."

quarta-feira, 2 de setembro de 2009

JPA e "last_insert_id"

Você já passou pelo problema de inserir um registro em uma tabela e logo a seguir precisar desse código pra relacionar com outra tabela (por exemplo....) e o seu objeto de persistência não retornar esse código?

Então seus problemas acabaram.... na classe da sua entidade, mais precisamente no campo que identifica a chave primária (autoincrement) da tabela, basta você inserir:

@GeneratedValue(strategy=GenerationType.IDENTITY)

Por exemplo:

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "codigo", nullable = false)
private Integer codigo;

Depois disso, após a chamada do commit você poderá chamar o método que retorna o código criado para o objeto, essa dica por retirada do endereço:

http://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing#Identity_sequencing


T+