salve, sto cercando di implementare un salvataggio automatico su un programma che dovrebbe permettere di raccogliere dati (goal, tiri, cartellini rossi etc.) di una partita di un qualunque sport. Ho cercato di usare un timer e un timertask.
Quando avvio il cronometro della partita, mi crea il timertask a cui passo l'istanza stessa della partita e poi faccio partire tramite il timer, lo scheduler.
codice:
public void AutoSave() { Timer t = new Timer();
AutoSaveThread autosave = new AutoSaveThread(NuovaPartita.this);
t.schedule(autosave,0, 10000);
}
In teoria il timertask dovrebbe salvare in un file l'oggetto partita ma eclispe mi da un nullpointerexception ogni volta che parte il timer task.
codice:
import java.io.ObjectOutputStream;import java.io.Serializable;
import java.util.TimerTask;
@SuppressWarnings("serial")
public class AutoSaveThread extends TimerTask implements Serializable {
private NuovaPartita partita;
public AutoSaveThread(NuovaPartita partita){
this.partita = partita;
}
public void run() {
try {
System.out.println("inizio salvataggio");
FileOutputStream f_out = new FileOutputStream(partita.toSave()+".autosave");
ObjectOutputStream obj_out = new ObjectOutputStream (f_out);
obj_out.writeObject ( partita);
obj_out.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("salvataggio automatico");
}
}
infine ecco gli errori che mi da
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.plaf.basic.BasicScrollPaneUI.paint(Unk nown Source)
at javax.swing.plaf.ComponentUI.update(Unknown Source)
at javax.swing.JComponent.paintComponent(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintToOffscreen(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paintDoubl eBuffered(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paint(Unkn own Source)
at javax.swing.RepaintManager.paint(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager$4.run(Unknown Source)
at javax.swing.RepaintManager$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPri vilege(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unkno wn Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unkno wn Source)
at javax.swing.RepaintManager.prePaintDirtyRegions(Un known Source)
at javax.swing.RepaintManager.access$1300(Unknown Source)
at javax.swing.RepaintManager$ProcessingRunnable.run( Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$400(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.doIntersectionPri vilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilter s(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(U nknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarch y(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)