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的問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM