Seguinte pessoal esse é meu 1º post com esse usuário mas tinha uma outra conta da empresa que trabalhava mas ai vai a minha dúvda.
Não estou conseguindo realizar a ação do banco no código abaixo.
package CONFIG;
import DAO.funcionarioDAO;
import DAO.votoDAO;
import VO.InternoConfig;
import VO.abortaView;
import VO.controleView;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
/**
* Hello world!
*
*/
public class AgendaHoraI implements Runnable {
Date time;
Date time1;
Boolean teste = true;
funcionarioDAO funcDAO;
votoDAO votoDAO;
abortaView canc = new abortaView();
controleView control = new controleView();
public AgendaHoraI() {
control.dispose();
}
@Override
public void run() {
while (teste) {
System.out.println("VOTANDO");
if (InternoConfig.getInstance().getStatus().equals("Recebido")) {
canc.dispose();
JOptionPane.showMessageDialog(null, "O funcionário "
+ InternoConfig.getInstance().getNome() + " Votou com"
+ " Sucesso");
InternoConfig.getInstance().readFile();
int c = Integer.parseInt(InternoConfig.getInstance().getVotante());
try {
Thread.sleep(5000);
funcDAO.alterarStatus(c,"VOTOU");
votoDAO.alterar(InternoConfig.getInstance().getNome(),
Integer.parseInt(InternoConfig.getInstance().getIdEleicao()));
InternoConfig.getInstance().readFile();
} catch (InterruptedException ex) {
ex.printStackTrace(System.err); //imprime a stack trace (o erro)
}
teste = false;
} else if (InternoConfig.getInstance().getStatus().equals("Enviado")) {
try {
Thread.sleep(1000);
InternoConfig.getInstance().readFile();
if (canc.isVisible()) {
} else {
canc.setVisible(true);
}
} catch (InterruptedException ex) {
Logger.getLogger(AgendaHoraI.class.getName()).log(Level.SEVERE, null, ex);
}
} else if (InternoConfig.getInstance().getStatus().equals("Fim")) {
teste = false;
}
}
}
}
O erro é esse abaixo
Exception in thread "Thread-2" java.lang.NullPointerException
at CONFIG.AgendaHoraI.run(AgendaHoraI.java:55)
at java.lang.Thread.run(Thread.java:722)
Lhes asseguro que o problema não é no SQL que as classes persistem mas sim pelo fato de estar dentro de uma Thread gostaria de saber
o que poderia ser.
Muito obrigado
Ola,
NullPointerException
verifique suas declarações, deve estar chamando um objeto que não está instanciado.
Não entendi direito o seu código. Parece que InternoConfig é um singleton.
Parece que a sua thread fica checando o status de alguma coisa. Se o status for “Enviado” ela chama o readFile da instância do singleton. Não sei se canc é uma janela.
Pode ser um problema de sincronização. Talvez outro código rodando simultaneamente esteja colocando algum objeto compartilhado como nulo. Cuidado com códigos que manipulam o mesmo objeto ao mesmo tempo. Se não puderem ser executados ao mesmo tempo, use synchronized.
Você não instanciou funcionarioDAO e votoDAO;
[quote=fabriRiboldi]Seguinte pessoal esse é meu 1º post com esse usuário mas tinha uma outra conta da empresa que trabalhava mas ai vai a minha dúvda.
Não estou conseguindo realizar a ação do banco no código abaixo.
package CONFIG;
import DAO.funcionarioDAO;
import DAO.votoDAO;
import VO.InternoConfig;
import VO.abortaView;
import VO.controleView;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
/**
* Hello world!
*
*/
public class AgendaHoraI implements Runnable {
Date time;
Date time1;
Boolean teste = true;
funcionarioDAO funcDAO;
votoDAO votoDAO;
abortaView canc = new abortaView();
controleView control = new controleView();
public AgendaHoraI() {
control.dispose();
}
@Override
public void run() {
while (teste) {
System.out.println("VOTANDO");
if (InternoConfig.getInstance().getStatus().equals("Recebido")) {
canc.dispose();
JOptionPane.showMessageDialog(null, "O funcionário "
+ InternoConfig.getInstance().getNome() + " Votou com"
+ " Sucesso");
InternoConfig.getInstance().readFile();
int c = Integer.parseInt(InternoConfig.getInstance().getVotante());
try {
Thread.sleep(5000);
funcDAO.alterarStatus(c,"VOTOU");
votoDAO.alterar(InternoConfig.getInstance().getNome(),
Integer.parseInt(InternoConfig.getInstance().getIdEleicao()));
InternoConfig.getInstance().readFile();
} catch (InterruptedException ex) {
ex.printStackTrace(System.err); //imprime a stack trace (o erro)
}
teste = false;
} else if (InternoConfig.getInstance().getStatus().equals("Enviado")) {
try {
Thread.sleep(1000);
InternoConfig.getInstance().readFile();
if (canc.isVisible()) {
} else {
canc.setVisible(true);
}
} catch (InterruptedException ex) {
Logger.getLogger(AgendaHoraI.class.getName()).log(Level.SEVERE, null, ex);
}
} else if (InternoConfig.getInstance().getStatus().equals("Fim")) {
teste = false;
}
}
}
}
O erro é esse abaixo
Exception in thread "Thread-2" java.lang.NullPointerException
at CONFIG.AgendaHoraI.run(AgendaHoraI.java:55)
at java.lang.Thread.run(Thread.java:722)
Lhes asseguro que o problema não é no SQL que as classes persistem mas sim pelo fato de estar dentro de uma Thread gostaria de saber
o que poderia ser.
Muito obrigado[/quote]
Dentro do seu run(), você está utilizando funcionarioDAO e votoDAO. Para utilizala-los, eles devem ser instanciados primeiro.
[code] public void run() {
funcionarioDAO = new FuncionarioDAO(); // primeiro deve instanciar os objetos
votoDAO = new VotoDAO();
while (teste) {
System.out.println(“VOTANDO”);
if (InternoConfig.getInstance().getStatus().equals(“Recebido”)) {
canc.dispose();
JOptionPane.showMessageDialog(null, “O funcionário "
+ InternoConfig.getInstance().getNome() + " Votou com”
+ " Sucesso");
InternoConfig.getInstance().readFile();
int c = Integer.parseInt(InternoConfig.getInstance().getVotante());
try {
Thread.sleep(5000);
funcDAO.alterarStatus(c,"VOTOU"); //Agora não terá problema de null com eles.
votoDAO.alterar(InternoConfig.getInstance().getNome(),
Integer.parseInt(InternoConfig.getInstance().getIdEleicao()));
InternoConfig.getInstance().readFile();
} catch (InterruptedException ex) {
ex.printStackTrace(System.err); //imprime a stack trace (o erro)
}
teste = false;
} else if (InternoConfig.getInstance().getStatus().equals("Enviado")) {
try {
Thread.sleep(1000);
InternoConfig.getInstance().readFile();
if (canc.isVisible()) {
} else {
canc.setVisible(true);
}
} catch (InterruptedException ex) {
Logger.getLogger(AgendaHoraI.class.getName()).log(Level.SEVERE, null, ex);
}
} else if (InternoConfig.getInstance().getStatus().equals("Fim")) {
teste = false;
}
}
}
[/code]