作者tkcn (小安)
看板java
标题Re: [问题] 使用runtime呼叫bat档
时间Fri Dec 17 17:41:28 2010
※ 引述《fiend1212 (YOOOOOOOOOOOOOOOOOOOOOO)》之铭言:
: 不好意思请问各位大大
: 小弟最近使用Runtime呼叫bat档去执行另一支JAVA程式
: 然後主程式要等这支程式跑完才继续执行
: 但却一直都等不到他结束...程式就卡在那
: 以下是我呼叫的程式码
: try{
: Runtime rt = Runtime.getRuntime();
: Process ps = rt.exec("C:/Users/admin/JAVA/Login.bat");
: ps.waitFor();
: }
: catch(Exception e){e.printStackTrace();}
: 因为另一支JAVA执行完会产生一个档案
: 若没有ps.waitFor();那个档案还是没有产生
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Edit:
抱歉刚刚没注意到这句,
我想你遇到的状况可能跟我下面所提的是不同的问题...
: 可是手动执行那个bat档就可以正常执行
: 请问有可能是什麽原因吗?
google "java process hang" 可以看到蛮多相同的情形,
这应该是一个 java 的 bug,
当 Proecess 输出了许多讯息(Standard output & Error),
而你没有去 read 出来时,就很可能会卡在那。
解决办法当然就是把两个 input stream 的资料通通独出来,
我的作法是额外包出一个物件来负责这件事。
code:
https://gist.github.com/744712
--
◤ ◥ ◢ ◣
T$,修好它吧。 ⊙▁⊙─ ─⊙▂⊙ 碰到问题,用SoftICE就对了!
╰ ∕皿﹨ ◥皿◤ ╯
◥█◤◢ ◥ ︶◤
Lee ◤ ︶ ◥◤ ﹨▼∕◥ T$ Chen
MYTHBUGTERS ◥ ◤\◥ by dajidali
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.114.78.231
※ 编辑: tkcn 来自: 140.114.78.231 (12/17 17:45)
1F:推 fiend1212:感谢!!!!! 问题解决了 真感动Q_Q 12/17 23:59
2F:→ tkcn:@@a 真的是这问题喔? 12/18 01:05
3F:→ fiend1212:嗯 @@ 12/18 22:54