我正在使用Runtime.getRunTime()
方法在Java中爲web服務調用exe文件。如果我在不使用Process.wait()
的情況下調用它,那麼它可以正常工作,但如果我將這與wait()
方法一起使用,那麼我的進程將掛起,我必須重新啓動Tomcat。當使用等待方法時,使用Runtime.getrunTime調用exe文件
任何人都可以說明爲什麼會發生這種情況嗎?
我正在使用Runtime.getRunTime()
方法在Java中爲web服務調用exe文件。如果我在不使用Process.wait()
的情況下調用它,那麼它可以正常工作,但如果我將這與wait()
方法一起使用,那麼我的進程將掛起,我必須重新啓動Tomcat。當使用等待方法時,使用Runtime.getrunTime調用exe文件
任何人都可以說明爲什麼會發生這種情況嗎?
This shows you WHY程序「等待()」外部進程完成執行。
現在,外部程序有可能正在請求stdout和stderr,而您的程序正在阻止該程序。這導致了永久的等待或所謂的僵局。 See this for more details。
如果我使用waitFor()然後進程等待無限期的時間,我不得不重新啓動tomcat服務器。我的代碼片段是這樣的:Process p = Runtime.getRuntime()。exec(「 - 我從cmd行採取的exe路徑參數「)p.waitFor() – matti
@matti這可能是因爲你的程序正在陷入僵局。一個正在等待另一個進程退出,而另一個進程正在等待獲得「stdout」/「stderr」訪問權限。 –
一個代碼片段顯示你有什麼,什麼是工作,什麼不工作,將有所幫助。 –