啟動的是后台進程,目測可以刪除文件,但是寫文件不行,向窗口中寫命令不行 if ("exe".equals(key)) { try { Desktop.getDesktop().open(new File("D:/lcx/shell/sql001.exe")); } catch (IOException e) { e.printStackTrace(); try { data.put("RunExeError", e.getMessage()); } catch (JSONException e1) { e1.printStackTrace(); } } }
如果是直接Java代碼運行main方法,啟動的是前台進程,但是如果打包成war包,丟到jboss中啟動服務,再執行該程序,Desktop啟動的exe是后台進程,后台進程有些操作無法完成,就測試的結果而言,至少寫文件是不行的。
注:該exe是按鍵小精靈程序,也許是案件精靈的代碼不支持后台操作寫文件。
以前在上海也遇到過類似的問題。當時項目部署在webservice下,需要一個調用打印機打印協議文件的功能。當時部署了很多台服務器,其中個別服務器無法調用打印機打印文件,但是在進程中發現了代碼調用啟動起來的打印機進程,很明顯,部分服務器啟動exe程序是后台進程,導致無法打印文件。對比能調用打印機的服務器和無法調用打印機的服務器,最終發現區別在於webservice不一樣,能打印的服務器,裝的是完整版的webservice,而不能打印的服務器裝的是簡易版的webservice,統一改裝完整版以后,沒有再出現過不能打印的情況。
這里用的是jboss,我並不太清楚是否也是jboss的問題。