启动的是后台进程,目测可以删除文件,但是写文件不行,向窗口中写命令不行 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的问题。