Java启动exe

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

posted @ 2020-09-22 11:02  1156740846  阅读(1077)  评论(0编辑  收藏  举报