2010-05-20 33 views
1

啓動外部控制檯應用程序我需要運行外部控制檯應用程序。隨着窗口的一切都OK:在Java應用程序中從Java

try { 
System.out.println("Running..."); 
    Runtime.getRuntime().exec("notepad.exe"); 
    System.out.println("End."); 
} 
catch(Exception e) { 
    System.out.println(e.getMessage()); 
} 

成功啓動記事本。

但是,如果我把D:\\MyProg.exe.bat甚至cmd.exe(這是它作爲記事本是路徑)它不起作用。沒有任何豁免。剛:

Running... 
End. 

回答

-1

這是因爲記事本放置在特殊的文件夾,並在Path變量存在此文件夾。使用以下行

運行cmd

Runtime.getRuntime().exec("cmd.exe /c start"); 

運行其他應用程序:

Runtime.getRuntime().exec("cmd.exe /c start C:\\path\\to\\app.exe"); 
+0

但cmd.exe也在「PATH」中。但它不起作用。此外,我preicse路徑「D:\\ MyProg.exe」,但它沒有幫助。 我需要在哪裏執行「開始」?在java中? – Andrew 2010-05-20 12:28:50

+0

是的,我想,但正如我上面提到的Runtime.getRuntime()。exec(「your.bat」); 也不起作用 – Andrew 2010-05-20 12:39:41

+0

它只是不會啓動* .bats – Andrew 2010-05-20 12:40:33

3

首先,最有可能Runtime.exec()異步返回,所以纔打印 「結束」 永遠是可行的,因爲exec調用立即返回,這就是你所看到的。

還有一些其他問題可能會在這裏顯示。我認爲正在發生的事情是,您正在調用的程序可能正在輸出標準輸出上的I/O,而您無法閱讀,或者您可能需要在退出java進程之前執行wait for it to finish。關於Runtime.exec()的各種問題,你應該閱讀一下great article,它涵蓋了這個問題和其他問題。