簡體   English   中英

不關閉Java應用程序就無法從Java啟動外部程序

[英]Can't launch external program from Java without closing java app

我正在嘗試使用以下命令從我的Java swing應用程序啟動外部程序:

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

但是,直到我關閉Java應用程序外,外部程序才真正啟動。 只有在我關閉后,它才會等待啟動。

我嘗試運行的外部程序是一個帶有參數的exe,因此:

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

這里可能出了什么問題。 有趣的是,如果我嘗試簡單的操作,它可以按預期工作:

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

在繼續進行之前,您可能需要從流程的標准輸出中讀取或關閉標准輸入。 為了讀取輸出,問題在於緩沖區可能已滿,從而阻塞了程序; 對於關閉輸入,問題在於某些程序將嘗試從那里讀取數據(如果有),等待這樣做。 這些技巧中的一個或兩個很可能會為您解決問題。

您還可以閱讀錯誤輸出流,以檢查程序實際上是否未成功執行

String cmd = "svn.exe";
Process proc = Runtime.getRuntime().exec(cmd);
BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
String line = null;
while((line=reader.readLine())!=null){
   System.out.println(line);
}
reader.close();

我的控制台顯示

輸入“ svn help”以供使用。

這顯然表明該程序是由Java執行的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM