- ベストアンサー
外部コマンドの実行について
・Actionクラス public ActionForward Batch( ActionMapping objActMapping, ActionForm objActFrm, HttpServletRequest objHttpRequest, HttpServletResponse objHttpResponse) throws Exception { ActionForward objActFwd = null; TestForm objTestForm = null; try { Runtime runtime = Runtime.getRuntime(); Process process = runtime.exec("c:/Batch/Batch.bat"); objActFwd = objActMapping.findForward("success"); } catch (Exception e) { e.printStackTrace(); throw e; } return objActFwd; } 以上のActionクラスをJSPからStrutusを介し実行しておりますが バッチファイルが実行されません。 batch.bat単体では実行可能です。 ご教授お願いいたします。 環境:WindowsXP j2sdk1.4.1 Jboss-3.2.3
- みんなの回答 (3)
- 専門家の回答
お礼
hogwan様 ご回答ありがとうございます。 1.についてはANo.2で書いた通り全てスタンドアローンでの作業です。 2.についてはこれからProcess#getErrorStreamにて確認してみたいと思います。
補足
ActionForward objActFwd = null; TestForm objForm = null; Process process = null; try { objForm = (TestForm ) objActFrm; objForm .setBatchCheck("call"); Runtime runtime = Runtime.getRuntime(); process = runtime.exec("cmd c:/Batch/Batch.bat"); // process.waitFor(); InputStream stream = process.getErrorStream(); while (true) { int c = stream.read(); if (c == -1) { stream.close(); break; } System.out.println((char)c); } objActFwd = objActMapping.findForward("success") objForm .setBatchCheck("success"); } catch (Exception e) { e.printStackTrace(); throw e; } finally { if(process != null) { process.getErrorStream().close(); process.getInputStream().close(); process.getOutputStream().close(); process.destroy(); } } return objActFwd; 以上、getErrorStreamにて確認しようとしているのですが 反応が返ってこなくなります。 ブラウザのゲージが少しづつ伸びて1/3程度でとまってしまいます。