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.