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

Langage Java Discussion :

[JRE] Erreur incompréhensible sur solaris


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 11
    Points : 11
    Points
    11
    Par défaut [JRE] Erreur incompréhensible sur solaris
    Bonjour,

    Sur un programme tournant sur Solaris avec la JVM Sun 1.4.2-b28 j'ai une erreur que je ne comprend pas et que je n'arrive pas à reproduire.

    Voici mon code:
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    public static Date convertAS400DateTime2JavaDateTime(String as400DateTime,String as400Date,String as400Time,String canReturnNull) {
    Date javaDate = null;
    if(as400DateTime==null || as400DateTime.trim().equals("0") || as400DateTime.trim().length()==0) {
    	if(as400Date!=null && as400Date.trim().length()==8) {
    		StringBuffer as400DateTimeBuffer = new StringBuffer(as400Date.trim());
    		if(as400Time==null || as400Time.trim().equals(""))
    			as400DateTimeBuffer.append("000000");
    		else {
    			as400Time = as400Time.trim();
    			for(int i=as400Time.length();i<6;i++)
    				as400DateTimeBuffer.append("0");
    			if(as400Time.length()>6)
    				as400DateTimeBuffer.append(as400Time.substring(0,6));
    			else
    				as400DateTimeBuffer.append(as400Time);
    		}		
    		as400DateTime = as400DateTimeBuffer.toString();
    	}
    }
    if(as400DateTime==null || as400DateTime.trim().equals("0") || as400DateTime.trim().length()==0) {
    	if(canReturnNull!=null && canReturnNull.equalsIgnoreCase("false")) 
    		throw new ServiceException("Input date of convertAS400Date2JavaDateTime is empty");
    } 
    else {
    	as400DateTime = as400DateTime.trim();
    	try {
    		javaDate = as400DateTimeFormat.parse(as400DateTime);
    	} catch(Exception e) {
    		throw new ServiceException(e);
    	}
    }
    return javaDate;
    }
    Lorsque cette function est exécutée avec les paramètres suivants il arrive (une fois sur 1000 environ) que cela plante. Si je relance le traitement, ça marche, c'est vraiment aléatoire.

    as400DateTime = null
    as400Date = "20060522"
    as400Time = "85836"
    canReturnNull = "True"

    Voici l'exception qui est jetée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    com.wm.app.b2b.server.ServiceException : java.lang.NumberFormatException : For input string: ""
    at givUtils.as400.dates.convertAS400DateTime2JavaDateTime (dates.java:118)
    at sun.reflect.GeneratedMethodAccessor216.invoke (Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke (Method.java:324)
    at com.wm.app.b2b.server.JavaService.baseInvoke (JavaService.java:287)
    at com.wm.app.b2b.server.invoke.InvokeManager.process (InvokeManager.java:587)
    at com.wm.app.b2b.server.invoke.StatisticsProcessor.process (StatisticsProcessor.java:44)
    La ligne 118 qui jette l'exception est la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    javaDate = as400DateTimeFormat.parse(as400DateTime);
    A noter que ce programme tourne depuis la nuit des temps sur AIX avec la JVM IBM 1.4.2 build ca142-20050929a et qu'il n'a jamais eu ce problème.

    Quelqu'un a t'il une explication à ce problème ?

    Merci à tous.

  2. #2
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Finalement j'ai trouvé la solution:

    Selon le forum de sun il s'agit d'un bug dans la classe SimpleDateFormat. Pour ne plus avoir de problème il faut synchronizer les accés aux objets SimpleDateFormat ou alors en créer un nouveau à chaque fois. A noter que cette erreur apparait uniquement sur les serveurs puissants.

    http://forum.java.sun.com/thread.jsp...sageID=2906187

    Désolé d'avoir posté trop vite mais qui sait, ce post sera peut être utile à quelqu'un d'autre!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD12] Erreur incompréhensible sur WDModfic
    Par zouzoukha dans le forum WinDev
    Réponses: 3
    Dernier message: 16/02/2015, 09h57
  2. Réponses: 15
    Dernier message: 26/11/2010, 21h38
  3. Une erreur incompréhensible sur un tableau
    Par renaud26 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/06/2010, 12h10
  4. [Debutant GCC sur Solaris]Erreur de compilation
    Par xxaragornxx dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 13/01/2006, 17h29
  5. Erreur incompréhensible à la ligne 200 (sur 190 ?!)
    Par transistor49 dans le forum Qt
    Réponses: 3
    Dernier message: 22/03/2005, 23h09

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