我有一个需要从Java调用并运行的R脚本。我试过这段代码:Runtime.getRuntime().exec("Rscript pathTo/R/myScript.R")
。我从windows命令运行它工作正常,但是当我在Eclipse中使用此代码运行java类时,没有任何反应。控制台没有显示任何错误没有日志。有人能告诉我如何从Java运行这个脚本吗?
答案 0 :(得分:1)
默认情况下,从java启动的Process
将其标准输入,标准输出和标准错误重定向到管道,您可以从java中访问这些管道。除非您从标准输出和错误管道中读取并自行将文本传输到Java应用程序的输出,否则不会显示任何输出。此外,如果管道的内部缓冲区已满,则子应用程序甚至可能在等待root写入其数据时阻塞。因此,该过程可能会挂起并永不终止。
从Java 7开始,您可以让子进程使用ProcessBuilder.inheritIO
从Java应用程序继承其I / O通道。这样可以省去自己从这些流中读取的所有麻烦。