This is probably something that old timers in Java will probably know, so I’m posting this more for my reference. Trying to execute:
Runtime.getRuntime().exec("dir");
results in the following stack trace.
java.io.IOException: CreateProcess: dir error=2 at java.lang.ProcessImpl.create(Native Method) at java.lang.ProcessImpl.(ProcessImpl.java:81) at java.lang.ProcessImpl.start(ProcessImpl.java:30) at java.lang.ProcessBuilder.start(ProcessBuilder.java:451) at java.lang.Runtime.exec(Runtime.java:591) at java.lang.Runtime.exec(Runtime.java:429) at java.lang.Runtime.exec(Runtime.java:326)
After doing some reading
error=2
apparently means file not found. The fix for something like this is to first pass everything to the windows command line shell (cmd.exe on windows xp). This seems to do the job better:
Runtime.getRuntime().exec("cmd /c dir");
The slash-C means “Carries out the command specified by string and then terminates”.