Ton objet il est de quelle classe ??
computeTime() existe pour Calendar et GregorianCalendar
Ton objet il est de quelle classe ??
computeTime() existe pour Calendar et GregorianCalendar
Si tu as un null c'est qu'il y a une erreur dans ton code... cela ne sert à rien de rechercher des "méthodes magiques" dans Calendar...
Vérifie bien ton code, ou poste le code indiqué dans ton stacktrace...
a++
Je pense que ton set ne met pas à jour ton Calendar comme il faut.
En effet les méthodes dont je parle sont protected, donc tu ne peux pas les déclencher à la main, peut être que tu peux t'en sortir comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 private Calendar lastCheck; lastCheck = Calendar.getInstance(); lastCheck.setTime( new Date(2000,1,1) );
Calendar me rappelle de mauvais souvenir, je me souviens par exemple que dans l'implémentation d'IBM, les champs n'étaient pas mis à jour si tu ne faisais pas un toString() !Envoyé par adiGuba
Il y a un problème à mon avis au niveau du recalcul de la vrai date... enfin peut-être que je me trompe, mais le problème que je cite un peu plus haut est réel, ça faisait planter une appli quand on changeait de fuseau horaire !
Attention les yeux ca pique :p
at NetworkEagleUI.ui.AppletUI.run(AppletUI.java:116)
Aprés :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 while (true) { try { System.out.println("Refresh"); new AlertParser("E:\\Day5.log", company, lastCheck); lastCheck = Calendar.getInstance(); } catch (AlertException e1) { //TODO e1.printStackTrace(); } try { Thread.sleep(10000); } catch(InterruptedException e){ //TODO e.printStackTrace(); } }
at NetworkEagleUI.parser.alert.AlertParser.<init>(AlertParser.java:32)
Code : Sélectionner tout - Visualiser dans une fenêtre à part private Calendar lastCheck;
c'est ici que lastCheck devient null donc ca sert a rien que je mette la suite. Je regarde la variable dans le constructeur (et non pas méthode mais bon je pense passe que ca change grand chose) AlertParser, elle est null
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public AlertParser(String fileName, Company company, Calendar lastCheck) throws AlertException{ try{ this.company = company; this.lastCheck = lastCheck; this.reader = new BufferedReader(new FileReader(fileName)); this.handler = new AlertHandler(); this.lineNumber = 0; this.parse(); }catch(IOException e){ //TODO e.printStackTrace(); } }
Tu instancies ton Calendar après l'appel au constructeur, normal ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 new AlertParser("E:\\Day5.log", company, lastCheck); lastCheck = Calendar.getInstance();
Ouai pour avoir l'heure de ma derniere MAJ.
C'est vrai que sur le coup j'ai fais ca comme un porc car normalement j'aurais du faire un truc du style:
Comme ca je sauvegarde l'heure puis je fais les MAJ par rapport à l'ancienne. Puis 10s plus tard idem ....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Calendar tmpCheck = (Calendar)lastCheck.clone(); lastCheck = Calendar.getInstance(); new AlertParser("E:\\Day5.log", company, tmpCheck);
De toute facon,le fait deja que ca marche certaines fois et pas d'autres je sentais le problème à la con. Mais alors là, je viens de faire la modif du message d'avant et les résultats sont que :
En exectution normale, ca fait toujours la même chose. Au début ca marche pas puis aprés ca marche.
En mode pas à pas: ca marche tout le temps
Alors je sais pas si c'est du à mon PC ou à Eclipse, mais ca c'est vraiment bizarre.
Ben oui, mais si tu le mets à jour après ton premier appel à ton constructeur, au premier passage, il sera = null non ?
C'est vrai que je ne l'ai pas ré-écrit, mais dans mon tout premier post j'avais que je fesait d'abord une initialisation de lastCheck :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 lastCheck = Calendar.getInstance(); lastCheck.set(2000,1,1);
mais tu le mets où ce code ?
directement en dessous de la déclaration des attributs ?
Il faut plutot le mettre dans le constructeur je pense, si ce n'est pas le cas.
Sinon il y a des chances que ce ne soit pas executé, peut-être que ton erreur est là.
Quand tu appelles ton constructeur
Tu lui fournis bien une valeur pour lastCheck ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public AlertParser(String fileName, Company company, Calendar lastCheck) throws AlertException{ try{ this.company = company; this.lastCheck = lastCheck; this.reader = new BufferedReader(new FileReader(fileName)); this.handler = new AlertHandler(); this.lineNumber = 0; this.parse(); }catch(IOException e){ //TODO e.printStackTrace(); } }
J'initialise dans la méthode init() car c'est un applet.
Sinon je peux plus vraiment te dire que je lui fourni vraiment une valeur car en mode pas a pas ca marche tout le temps. Et bon d'après mon code, ca serait oui la réponse.
Moi j'ai vraiment l'impression que c'est un problème d'execution mais bon dans la logique c'est pas possible.
Essaie de donner la main au constructeur pour initialiser lastCheck, et qu'il fasse lui même la mise à jour via le Calendar.getInstance(). Ainsi tu enlèves le paramètre de la liste dans ton constructeur.
Peut-être que ça marchera mieux... Bien que comme tu dis je ne vois pas pourquoi![]()
Partager