一千萬個為什麽

搜索

如果不關閉Java應用程序,無法從Java啟動外部程序

我正在嘗試使用以下方法從我的java swing應用程序啟動外部程序:

Process proc = Runtime.getRuntime().exec(cmd);

但是在我每次關閉我的java應用程序之前,外部程序實際上從未啟動過。 它只在我關閉後等待啟動。

我試圖運行的外部程序是一個帶參數的exe:

cmd = "externalProgram.exe -v --fullscreen --nowing";

這可能是錯的。 有趣的是,如果我嘗試一些簡單的事情,它會按預期工作:

Process proc = Runtime.getRuntime().exec("notepad.exe");

最佳答案

您可能需要先讀取流程的標準輸出,或關閉標準輸入,然後才能繼續。為了讀取輸出,問題是緩沖區可能已滿,阻塞程序;為了關閉輸入,問題是某些程序會嘗試從那裏讀取數據,如果它可用,等待這樣做。這些技巧中的一個或兩個很可能會為你解決問題。

轉載註明原文: 如果不關閉Java應用程序,無法從Java啟動外部程序