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.
Mostrando postagens com marcador erros. Mostrar todas as postagens
Mostrando postagens com marcador erros. Mostrar todas as postagens
quinta-feira, 29 de abril de 2010
sexta-feira, 6 de março de 2009
Broken pipe: A SOLUÇÃO CORRETA
Não vou negar... quebrei muito a cabeça com esse problema em um sistema que recebe conexões via socket, o problema se dava quando ficava muito tempo se receber conexões, eis que acabava gerando o erro "Broken pipe"... e nada mais funcionava, a minha primeira tentativa (com sucesso) mas não muito elegante, pois poderia acarretar em outros problemas está no post:
http://netbeando.blogspot.com/2008/06/broken-pipe-conexo-com-socket-no-banco.html
Bom, agora apresento a solução mais elegante...
1) Para criar um pool de conexões com o banco, inclua no seu projeto a biblioteca c3p0 e faça a conexão dessa forma:
ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass("com.mysql.jdbc.Driver");
cpds.setJdbcUrl("jdbc:mysql://localhost:3306/nome_base_dados");
cpds.setUser("usuario_banco");
cpds.setPassword("senha_usuario_banco");
cpds.setMinPoolSize(5);
cpds.setAcquireIncrement(5);
cpds.setMaxPoolSize(20);
cpds.setIdleConnectionTestPeriod(60);
cpds.setMaxStatements(0);
cpds.setInitialPoolSize(3);
cpds.setPreferredTestQuery("select 1");
cpds.setCheckoutTimeout(1000);
con = cpds.getConnection();
Essas foram as configurações que eu utilizei para testes no meu tipo de sistema, pesquise sobre o c3p0 e veja quais serão as que se adaptam melhor ao seu problema.
2) Por último, mas não menos importante, sete a propriedade do socket (server) que recebe as conexões do cliente:
private static Socket conexao;
.
.
.
public static void main(String[] args) {
.
.
.
conexao.setKeepAlive(true);
.
.
.
}
Fazendo esses 2 itens resolveu completamente o problema.
Espero que ajude a você também...
http://netbeando.blogspot.com/2008/06/broken-pipe-conexo-com-socket-no-banco.html
Bom, agora apresento a solução mais elegante...
1) Para criar um pool de conexões com o banco, inclua no seu projeto a biblioteca c3p0 e faça a conexão dessa forma:
ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass("com.mysql.jdbc.Driver");
cpds.setJdbcUrl("jdbc:mysql://localhost:3306/nome_base_dados");
cpds.setUser("usuario_banco");
cpds.setPassword("senha_usuario_banco");
cpds.setMinPoolSize(5);
cpds.setAcquireIncrement(5);
cpds.setMaxPoolSize(20);
cpds.setIdleConnectionTestPeriod(60);
cpds.setMaxStatements(0);
cpds.setInitialPoolSize(3);
cpds.setPreferredTestQuery("select 1");
cpds.setCheckoutTimeout(1000);
con = cpds.getConnection();
Essas foram as configurações que eu utilizei para testes no meu tipo de sistema, pesquise sobre o c3p0 e veja quais serão as que se adaptam melhor ao seu problema.
2) Por último, mas não menos importante, sete a propriedade do socket (server) que recebe as conexões do cliente:
private static Socket conexao;
.
.
.
public static void main(String[] args) {
.
.
.
conexao.setKeepAlive(true);
.
.
.
}
Fazendo esses 2 itens resolveu completamente o problema.
Espero que ajude a você também...
quinta-feira, 5 de junho de 2008
Broken pipe na conexão com socket no banco de dados
Bom, pra não perder o histórico do blog (já que realmente não costumo postar muito) vou deixar a solução digamos meio que "gambearristica" encontrada abaixo, mas que me resolveu o problema no momento e vou criar outro tópico sobre esse mesmo assunto, pois consegui resolver o problema de forma efetiva sem alterar qualquer configuração no banco de dados, a solução (ao meu ver mais correta) está nesse link: http://netbeando.blogspot.com/2009/03/broken-pipe-solucao-correta.html
Mas caso ela não resolva o seu problema, parta para algo mais radical como a solução abaixo:
Fiquei muito tempo tentando descobrir como resolver um problema que ocorria todos os dias em um sistema que ficava aguardando conexões de clientes através de um socket, o problema é que como as conexões eram esporádicas, ou seja, ficavam as vezes mais de 10 horas sem receber conexão alguma e no momento que algum cliente tentava se conectar depois deste período de inatividade ocorria o erro no socket com a mensagem "broken pipe", bom, tentei resolver de várias formas, mas infelizmente por uma série de motivos a única forma que resolveu efetivamente foi aumentando o timeout do próprio banco de dados. No meu caso eu estou utilizando o mysql, então se você acessar o prompt do mysql e digitar:
show variables
Serão mostradas todas as variáveis utilizadas por esse banco de dados, a que realmente interessa é a:
wait_timeout
Inicialmente essa variável está definida para 28800 , li sobre o assunto e me parece que definindo como ZERO as conexões do banco de dados ficam sem timeout, acabei não optando por essa opção, simplesmente aumentei esse timeout para que ficasse a minha conexão ativa por mais de 12h mesmo sem inatividade, resolveu 100% o problema.
Bom, agora você deve estar se perguntando como alterar o conteúdo desta variável, no meu caso, como o sistema operacional que esta instalado o sistema é um Linux, bastou acessar o arquivo /etc/mysql/my.cnf , editar com um editor de textos qualquer e trocar o valor da variável... claro tive que reiniciar o mysql depois.
T+
Mas caso ela não resolva o seu problema, parta para algo mais radical como a solução abaixo:
Fiquei muito tempo tentando descobrir como resolver um problema que ocorria todos os dias em um sistema que ficava aguardando conexões de clientes através de um socket, o problema é que como as conexões eram esporádicas, ou seja, ficavam as vezes mais de 10 horas sem receber conexão alguma e no momento que algum cliente tentava se conectar depois deste período de inatividade ocorria o erro no socket com a mensagem "broken pipe", bom, tentei resolver de várias formas, mas infelizmente por uma série de motivos a única forma que resolveu efetivamente foi aumentando o timeout do próprio banco de dados. No meu caso eu estou utilizando o mysql, então se você acessar o prompt do mysql e digitar:
show variables
Serão mostradas todas as variáveis utilizadas por esse banco de dados, a que realmente interessa é a:
wait_timeout
Inicialmente essa variável está definida para 28800 , li sobre o assunto e me parece que definindo como ZERO as conexões do banco de dados ficam sem timeout, acabei não optando por essa opção, simplesmente aumentei esse timeout para que ficasse a minha conexão ativa por mais de 12h mesmo sem inatividade, resolveu 100% o problema.
Bom, agora você deve estar se perguntando como alterar o conteúdo desta variável, no meu caso, como o sistema operacional que esta instalado o sistema é um Linux, bastou acessar o arquivo /etc/mysql/my.cnf , editar com um editor de textos qualquer e trocar o valor da variável... claro tive que reiniciar o mysql depois.
T+
sábado, 1 de dezembro de 2007
Mensagem: detached entity passed to persist
Essa mensagem estava ocorrendo em um formulário utilizando JPA TopLink, sempre que eu tentava inserir um segundo registro em sequencia, procurando por uma solução encontrei a seguinte:
http://javanotepad.blogspot.com/2007/05/ive-found-bug-in-hibernate.html
Se você está com preguiça de ler eu vou resumir :-)
O problema ocorre porque após ocorrer algum problema ao tentar salvar o registro o sistema tenta persistir o mesmo objeto persistido anteriormente, pra mim resolveu inserindo a linha que está em negrito:
Funcionarios f = new admconvenios.Funcionarios();
entityManager.persist(f);
f.setCodigo(null);
http://javanotepad.blogspot.com/2007/05/ive-found-bug-in-hibernate.html
Se você está com preguiça de ler eu vou resumir :-)
O problema ocorre porque após ocorrer algum problema ao tentar salvar o registro o sistema tenta persistir o mesmo objeto persistido anteriormente, pra mim resolveu inserindo a linha que está em negrito:
Funcionarios f = new admconvenios.Funcionarios();
entityManager.persist(f);
f.setCodigo(null);
sexta-feira, 30 de novembro de 2007
Resolver problema de conexão do sistema web com o banco de dados
Ao tentar executar um webapplication com conexão com banco de dados, em uma tela de login por exemplo, ocorre erro de conexão, para resolver esse problema basta (estou utilizando MySQL):
copiar do diretório:
\ide8\modules\ext\mysql-connector-java--bin.jar
para o diretório:
\domains\{domain_name}\lib\
Esta dica foi retirada do site netbeans.org (inssue 119278)
Outra coisa, mesmo eu tentando fazer a conexão com o banco de dados MySQL e esse driver estando no diretório indicando acima não foi possível realizar a conexão, por que? Simplesmente por que é necessário que o arquivo derbyclient.jar esteja lá também... vai entender....(????), mas basta inserir esse arquivo (derbyclient.jar) no diretório \domains\{domain_name}\lib\ que tudo funciona.
copiar do diretório:
\ide8\modules\ext\mysql-connector-java--bin.jar
para o diretório:
\domains\{domain_name}\lib\
Esta dica foi retirada do site netbeans.org (inssue 119278)
Outra coisa, mesmo eu tentando fazer a conexão com o banco de dados MySQL e esse driver estando no diretório indicando acima não foi possível realizar a conexão, por que? Simplesmente por que é necessário que o arquivo derbyclient.jar esteja lá também... vai entender....(????), mas basta inserir esse arquivo (derbyclient.jar) no diretório \domains\{domain_name}\lib\ que tudo funciona.
Assinar:
Postagens (Atom)