Hallo. Ich habe ein Problem bei meinem Applet. ich möchte gern einen Timer einbauen, der mir alle x Sekunden eine Funktion meines Applets aufruft.
Zunächst dachte ich an einen TimerTask. Doch dieser ist in Java 1.1.8 nicht verfügbar. Auch die Klasse Timer nicht.
Prüfe in einem normalen Thread die Zeit (System.getTimeMills() oder so), speicher die erste Zeit, sobald die differenz zwischen erster und zweiter Zeit größer oder gleich deinem Interval ist, löst du die Aktionen aus und ersetzt den Startwert durch den aktuellen Zeitwert.
:meld: Aber ein neues Java ist definitiv die bessere Lösung!
Prüfe in einem normalen Thread die Zeit (System.getTimeMills() oder so), speicher die erste Zeit, sobald die differenz zwischen erster und zweiter Zeit größer oder gleich deinem Interval ist, löst du die Aktionen aus und ersetzt den Startwert durch den aktuellen Zeitwert.
Ich denke, benötige auf jedenfall einen 2. Thread, der mir die Funktion zyklisch aufruft. Dann könnte ich auch mit ner Schleife und sleep arbeiten oder? Ist das mit java 1.1.8 umsetzbar?
Und wie würde die Implementation eines solchen Threads aussehen?
habe folgendes:
Code:
public class diagram extends java.applet.Applet {
...
public synchronized void init() {
...
timertask=new Task(this);
timertask.setPriority(1);
timertask.run();
System.out.println("Init fertig");
}
public void updateDiagram() {
bGetNewData=true;
repaint();
}
}
class Task extends Thread {
private diagram theInstance;
public Task(diagram instance){
theInstance=instance;
}
public void run(){
System.out.println("Timer: run()");
while(true){
try{
System.out.println("neue runde");
sleep(10000);
}
catch(InterruptedException e){
System.err.println("Timer-Exception: kein sleep()");
}
theInstance.updateDiagram();
}
}
}
Sobald ich aber die Funktion run() des Threads in der init() Funktion meines Applets aufrufe, hängt mein Applet. Nur die Timer-Funktion run() scheint dann noch zu laufen. "Init fertig" wird also gar nicht in der Konsole ausgegeben, "neue runde" jedoch schon alle 10sek.
Auch das Ändern der Prioritäten hat nichts geholfen.
So wenn ich das Applet in Eclipse starte funktionier alles bestens. Wenn ich das Applet aber gepackt auf meinen webserver lege und in einen html-code einbinde bekomme ich ein "NoClassDefFoundError"-Exception.
Ohne diesen zusätzlichen Thread funktioniert das ganze jedoch. Hat Jemand eine Idee?
So wenn ich das Applet in Eclipse starte funktionier alles bestens. Wenn ich das Applet aber gepackt auf meinen webserver lege und in einen html-code einbinde bekomme ich ein "NoClassDefFoundError"-Exception.
Ohne diesen zusätzlichen Thread funktioniert das ganze jedoch. Hat Jemand eine Idee?
NoClassDefFound heißt, dass eine Klasse nicht gefunden werden konnte. In der fehlermeldung steht drin welche, dann guckst du ob die in deinem package ist oder wo die sein sollte und warum sie da nicht ist...
eclipse vergisst beim jar packen gelegentlich Dateien, , weil ein jar-Archiv eigentlich ein zip-Archiv ist, kann man die mit 7zip, WinZip oder sowas nachlegen...