2012-08-09 260 views
0

我有一個R腳本,需要從Java調用並運行。我試過這個代碼:Runtime.getRuntime().exec("Rscript pathTo/R/myScript.R")。我運行它從Windows命令它工作得很好,但是當我在Eclipse中使用此代碼運行Java類時,沒有任何反應。控制檯不顯示任何錯誤沒有日誌。有人能告訴我如何從Java運行這個腳本嗎?從Java運行R腳本

回答

1

默認情況下,從java啓動的Process將其標準輸入,標準輸出和標準錯誤重定向到管道,您可以從java中訪問管道。除非您從標準輸出和錯誤管道讀取並將文本傳輸到Java應用程序的輸出,否則不會顯示任何輸出。此外,如果管道的內部緩衝區已滿,則在等待root用戶寫入其數據時,子應用程序甚至可能會阻塞。所以這個過程可能會掛起而不會終止。

從Java 7開始,您可以讓子進程使用ProcessBuilder.inheritIO從Java應用程序中繼承它的I/O通道。這可以節省您自己從這些流中讀取的所有麻煩。