it is all in where rthe stream is writing- I am assuming that behind the scenes the system.out self closes the stream
where as the .err may not do so without some delay because it is checking to see if there is anywhere else it should write the message too... see this forum's bable about it...
there is some bickering there about who is right and who is not- i tried to find some definitive proc infor for you but the bottom line is keep it consistent... I would use the .err to write to a log method (however you handle error logging) and use system.out to write to the console
Edit: more elaboration of how I *think it might be working...
ok what do you want em to write? "blah"
ok what do you want me to write? "blah"
you want me to write that anywhere else? no
*just my thoughts on the matter though
I am assuming here that there is some delegate in the .err method that handles the command argument and it needs to spit back the process of that argument even if that argument is null