try{ String command = "xxx"; Process child = Runtime.getRuntime().exec(command); child.waitFor(); }catch(Exception e){ e.printStackTrace(); }
?上面的语句在unix和mac下调用都没问题,但是windows下就会出现主线程被阻塞(block)的问题了。
Because some native platforms only provide limited buffer size for standard input and output streams, failure to promptly write the input stream or read the output stream of the subprocess may cause the subprocess to block, and even deadlock.
参照?http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html?page=1
暂时windows下面只是用延时来对付。
//************************************************************************************
另外发现windows下面还有一个问题
xx.class.getProtectionDomain().getCodeSource().getLocation().getPath()
读取到的路径是/c:/xxxx ?前面多了一个斜杠,当然这个路径java是可以认的,但是命令行就不行了,另外分割符也不是反斜杠,不过这个还能认。