IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Probleme Calendar


Sujet :

Java

  1. #1
    Membre éclairé Avatar de warwink
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 650
    Points : 823
    Points
    823
    Par défaut Probleme Calendar
    Voila, j'expose un petit probleme bizarre, ou en tout cas pour moi.

    J'ai un petit programme qui utilise la classe Calendar. (d'ailleur au passage, je suis prenneur pour une meilleure initialisation de mon 'lastcheck' car je sais pas si c'est comme ca qu'il faut s'y prendre)

    private Calendar lastCheck;
    lastCheck = Calendar.getInstance();
    lastCheck.set(2000,1,1);
    Et ensuite je le passe en argument pour l'appelle d'une methode.
    Et c'est donc la que le probleme arrive. Quand je lance le programme, il me sort une erreur (dans la méthode, lastCheck devient null ) mais que sur les premieres executions du programme. En insistant, au bout du 4eme ou 5eme lancement, ca le fait plus et puis ca marche nickel.

    Voici l'erreur:

    Exception in thread "Thread-3" java.lang.NullPointerException
    at java.util.Calendar.getMillisOf(Unknown Source)
    at java.util.Calendar.compareTo(Unknown Source)
    Autre petite indication, j'execute le programme avec Eclipse. Quabd je quitte Eclipse et que je le relance, le probleme revient.

    Merci.

  2. #2
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Je ne pense pas que ça ait un rapport avec Eclipse ( que j'apprécie enormément pour ma part )

    Pourquoi n'utilises-tu pas un objet Date() plutot ? Je pense que c'est plus adapté. L'objet Calendar n'est pas à passer en argument comme tu le fais, il faut faire un getInstance dans chaque méthode; il s'agit d'un singleton.

    A+
    K

  3. #3
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    L'avantage de l'objet Date est que tu peux le passer en paramètre, lui
    Donc si c'est le besoin initial, c'est le meilleur moyen.
    En plus l'objet Date colle bien avec des champs de type Date en base de données.
    Puis finalement, tu peux avoir un objet Date pour chaque instant souhaité, sans écraser le précedent; Calendar te retourne l'instant T, mais ne te permet pas de stocker l'instant t-1

    A+
    K

  4. #4
    Membre éclairé Avatar de warwink
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 650
    Points : 823
    Points
    823
    Par défaut
    Merci pour vos réponses.

    Je vais essayé de me pencher un peu plus sur Date alors. Car, dans un premier temps, c'est celui-ci que j'avais utilisé mais pour une raison que là, maintenant, tout de suite, je me rappelle plus, j'avais changé car je ne pouvais pas faire un truc .

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par KiLVaiDeN
    Pourquoi n'utilises-tu pas un objet Date() plutot ? Je pense que c'est plus adapté.

    L'objet Calendar n'est pas à passer en argument comme tu le fais, il faut faire un getInstance dans chaque méthode; il s'agit d'un singleton.
    Non l'objet Calendar est bien adapté au traitement sur les dates... et il n'est en aucun cas un Singleton : chaque appel à getInstance() te renvoit un nouvel objet Calendar selon ton timezone et ta locale... Pour la plupart des pays cela revient à créer un GregorianCalendar...


    Le problème semble plutôt venir de ta gestion des threads : dans certains car tu te retrouves avec un attribut mal-initialisé...
    Est-ce que le stacktrace de l'erreur est complet ? Si ce n'est pas le cas donne le nous avec le code correspondant à ton codes sources...

    a++

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par warwink
    Je vais essayé de me pencher un peu plus sur Date alors. Car, dans un premier temps, c'est celui-ci que j'avais utilisé mais pour une raison que là, maintenant, tout de suite, je me rappelle plus, j'avais changé car je ne pouvais pas faire un truc .
    C'est surement parce que la plupart des méthodes de Date sont déprécié et qu'il ne vaut mieux pas les utiliser...

  7. #7
    Membre éclairé Avatar de warwink
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 650
    Points : 823
    Points
    823
    Par défaut
    Voila, moi j'initialise avec ces champs la :

    int year, int month, int date, int hrs, int min, int sec

    Et le constructeur de Date est "deprecated". Et dans la bible, ils disent qu'il faut utiliser Calendar


    Edit: Voila comme tu viens de dire adiGuba

  8. #8
    Membre éclairé Avatar de warwink
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 650
    Points : 823
    Points
    823
    Par défaut
    Voila le complet :

    Exception in thread "Thread-3" java.lang.NullPointerException
    at java.util.Calendar.getMillisOf(Unknown Source)
    at java.util.Calendar.compareTo(Unknown Source)
    at NetworkEagleUI.parser.alert.AlertHandler.element(AlertHandler.java:20)
    at NetworkEagleUI.parser.alert.AlertParser.parse(AlertParser.java:47)
    at NetworkEagleUI.parser.alert.AlertParser.<init>(AlertParser.java:33)
    at NetworkEagleUI.ui.AppletUI.run(AppletUI.java:113)
    at java.lang.Thread.run(Unknown Source)

  9. #9
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Je me sers très souvent des objets Date sans aucun souci, peut-être vais-je en avoir un jour

    J'étais persuadé que Calendar était un singleton, avec sa méthode getInstance, je suis trop habitué à cette corrélation on dirait..

    Merci pour l'info en tout cas adiGuba, je vais utiliser des GregorianCalendar de partout maintenant
    K

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Points : 711
    Points
    711
    Par défaut
    Bonjour,
    Citation Envoyé par KiLVaiDeN
    Je me sers très souvent des objets Date sans aucun souci, peut-être vais-je en avoir un jour
    Personne ne dit que ça ne marche pas (moi même je m'en sers de temps en temps).
    C'est seulement déprécié, ce qui signifie que rien ne garantit son maintien dans les versions futures de Java, ce qui posera problème aux logiciels qui l'utilisent.
    Compilation sans erreur ne signifie pas programme sans erreur.
    L'indentation n'a pas été imaginée pour faire beau, mais pour faciliter la lecture des programmes.

  11. #11
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Voici un article interessant trouvé sur la toile au sujet de Date et Calendar : http://www.xmission.com/~goodhill/da...eprecation.htm
    K

  12. #12
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 413
    Points : 1 993
    Points
    1 993
    Par défaut
    Bonjour,

    Tu utilises la méthode compareTo(Object o) .

    As-tu contrôlé que l'argument passé à compareTo n'est pas null?
    Bien le bonjour chez vous
    Jowo

  13. #13
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    KiLVaiDen >> Date peut renvoyer des valeurs incorrects pour certain timezone et/ou locale. Calendar gère cela beaucoup mieux et est nettement plus complet...

    warwink >> L'origine de ton problème doit surement venir d'une de ces lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    at NetworkEagleUI.parser.alert.AlertHandler.element(AlertHandler.java:20)
        at NetworkEagleUI.parser.alert.AlertParser.parse(AlertParser.java:47)
        at NetworkEagleUI.parser.alert.AlertParser.<init>(AlertParser.java:33)
        at NetworkEagleUI.ui.AppletUI.run(AppletUI.java:113)
    Vérifie donc le code de ces méthodes...

  14. #14
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    adiGuba : en fait il ne faut se servir de l'objet Date que comme un conteneur, et ne pas utiliser les méthodes qui retournent des informations autre que le long de type timestamp. Comme il est dit dans l'article que j'ai mit en lien, c'est un peu le même principe qu'un objet Integer pour les int.

    Pour récuperer les éléments indépendamment, en effet tu peux alors utiliser un calendar, qui lui connait les Timezone, et te retournera les bonnes valeurs, mais je pense qu'étant donné que l'objet Date est plus compacte que l'objet Calendar, il convient peut-être mieux quand on s'en sert de "conteneur" tout simplement.

    Je ne me rappellais pas trop pourquoi j'utilisais Date dans mes programmes alors que je connaissais Calendar et le fait que les méthodes de Date étaient dépréciées; en fait la seule chose que je ne savais pas, c'est que Calendar n'était pas un singleton, mais vu que dans mon utilisation je me sers de Calendar plus comme d'une classe statique ( bien que ce ne soit pas le cas.. ) qui me retournerait des éléments correctes par rapport à un objet Date donné, la confusion était facile

    Date est juste un conteneur, c'est tout ce que je voulais dire, donc il est plus efficace d'avoir un objet Date en tant que membre d'un objet, plutot qu'un objet Calendar plus complexe.

    A+
    K

  15. #15
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Tout à fat d'accord sur ce point. Je parlais essentiellement du travail sur les dates

  16. #16
    Membre éclairé Avatar de warwink
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 650
    Points : 823
    Points
    823
    Par défaut
    Citation Envoyé par jowo
    Bonjour,

    Tu utilises la méthode compareTo(Object o) .

    As-tu contrôlé que l'argument passé à compareTo n'est pas null?
    L'erreur c'est bien ca, c'est que dans une méthode ou je passe un Calendar, celui ci est null donc dans le compareTo ca déconne.

    Mais je disais dans mon premier poste qu'en faite cela se produit que pour les premières execution. En mode debug, quand je passe de l'appel de la méthode à la méthode elle-même, ma variable passe à null. Et donc j'arrete et je relance le programme 3 ou 4 fois et puis après ca passe bien.

  17. #17
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Salut,

    Après cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lastCheck.set(2000,1,1);
    Essaie de faire un :

    Pour voir si ça ne te débloque pas.
    K

  18. #18
    Membre éclairé Avatar de warwink
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 650
    Points : 823
    Points
    823
    Par défaut
    Citation Envoyé par KiLVaiDeN
    euuuh, cette méthode n'existe pas.

  19. #19
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    alors computeTime();
    K

  20. #20
    Membre éclairé Avatar de warwink
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 650
    Points : 823
    Points
    823
    Par défaut
    ca non plus ca n'existe pas XD

Discussions similaires

  1. Probleme Calendar Binding
    Par condor_ dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 17/06/2013, 08h39
  2. probleme avec un objet Calendar
    Par ver_for dans le forum IHM
    Réponses: 0
    Dernier message: 06/06/2008, 10h31
  3. Probleme numero semaine calendar
    Par MortDansLAme dans le forum Collection et Stream
    Réponses: 12
    Dernier message: 28/04/2008, 15h10
  4. probleme avec Calendar
    Par jerome86600 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 22/05/2007, 16h03
  5. probleme avec la classe calendar
    Par fatmax dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 04/10/2005, 17h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo