OVH Cloud OVH Cloud

Null pointer et GregorianCalendar

3 réponses
Avatar
une.bevueVOTEZ
Bonjour, j'ai un pb bizarre avec GregorianCalendar

je teste si mon calender != null et je print year...
et j'ai une erreur null pointer exception, c'est veut dire que le test
n'est pas bon ?
(si je teste à null c'est pour éviter cela...)

le code :
Calendar tastingDate = (GregorianCalendar) tasting.tastingDate;
if (tastingDate != null) {
Integer tastingDateYear = new
Integer(tastingDate.get(Calendar.YEAR)); <<<<== LIGNE 87
...

et j'ai l'erreur :

java.lang.NullPointerException
at
java.util.GregorianCalendar.computeTime(GregorianCalendar.java:1530)
at java.util.Calendar.updateTime(Calendar.java:1569)
at java.util.Calendar.complete(Calendar.java:1106)
at java.util.Calendar.get(Calendar.java:942)
at yt.tastings.datas.Tastings2XML.write(Tastings2XML.java:87)
at yt.tastings.datas.Tastings2XML.write(Tastings2XML.java:33)
at MyController.awakeFromNib(MyController.java:341)


je ne sais pas comment la date a été rentrée (base de données) elle est
peut-être invalide (genre 31 février...) ???

moyen de tester si calendar est valide ?
--
une bévue

3 réponses

Avatar
une.bevueVOTEZ
Une bévue wrote:

je ne sais pas comment la date a été rentrée (base de données) elle est
peut-être invalide (genre 31 février...) ???


je viens de modifier mon code, et j'y ai ajouté :

tastingDate.setLenient(true);

ça ne change rien...

je voudrais ** au moins ** mettre la date à 00/00/0000 quand un truc
comme ça se passe...
--
une bévue

Avatar
BJB
Bonsoir,

Tu ne peux pas récupérer un java.util.Date ou au pire un java.sql.Date
de ta base directement ?

Si tu as une chaine de stockée dans la base et que ton pilote JDBC ne
sait pas faire la correspondance tu peux utiliser un SimpleDateFormat
pour l'analyse synthaxique
http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html
et récupere un objet avec un date....

Je te conseille aussi d'utiliser un débugger et de mettre un point
d'arrêt à l'endroit incriminé et de regarder à quoi ressemble tes
données. Vu que tu as les sources de la VM de dispo ça te servira pour
comprendre le "pourquoi du comment".

A+
JB

Une bévue wrote:
Bonjour, j'ai un pb bizarre avec GregorianCalendar

je teste si mon calender != null et je print year...
et j'ai une erreur null pointer exception, c'est veut dire que le test
n'est pas bon ?
(si je teste à null c'est pour éviter cela...)

le code :
Calendar tastingDate = (GregorianCalendar) tasting.tastingDate;
if (tastingDate != null) {
Integer tastingDateYear = new
Integer(tastingDate.get(Calendar.YEAR)); <<<<== LIGNE 87
...

et j'ai l'erreur :

java.lang.NullPointerException
at
java.util.GregorianCalendar.computeTime(GregorianCalendar.java:1530)
at java.util.Calendar.updateTime(Calendar.java:1569)
at java.util.Calendar.complete(Calendar.java:1106)
at java.util.Calendar.get(Calendar.java:942)
at yt.tastings.datas.Tastings2XML.write(Tastings2XML.java:87)
at yt.tastings.datas.Tastings2XML.write(Tastings2XML.java:33)
at MyController.awakeFromNib(MyController.java:341)


je ne sais pas comment la date a été rentrée (base de données) elle est
peut-être invalide (genre 31 février...) ???

moyen de tester si calendar est valide ?


Avatar
une.bevueVOTEZ
BJB wrote:

Tu ne peux pas récupérer un java.util.Date ou au pire un java.sql.Date
de ta base directement ?
pas dans mon cas, ma base de données est une base objet, j'enregistre

directement l'objet java Calendar.

[...]


Je te conseille aussi d'utiliser un débugger et de mettre un point
d'arrêt à l'endroit incriminé et de regarder à quoi ressemble tes
données. Vu que tu as les sources de la VM de dispo ça te servira pour
comprendre le "pourquoi du comment".


ouais, merci pour cette idée, je pense que c'est la seule solution,
apparemment d'autres que moi ont galéré sur ce même genre de pb, sans
résultat...
--
une bévue