我正在尝试从 Java 启动 R 进程并重定向标准输入和标准输出。
processBuilder = new ProcessBuilder().command("/usr/bin/R").redirectErrorStream(
true);
try {
Process p = processBuilder.start();
OutputStream stdin = p.getOutputStream();
InputStream stdout = p.getInputStream();
BufferedReader reader = new BufferedReader (new InputStreamReader(stdout));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin));
String line;
while ((line = reader.readLine ()) != null) {
System.out.println ("Stdout: " + line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我使用的是 Java 1.6。当程序运行时,我收到以下错误:
标准输出: fatal error :您必须指定“--save”、“--no-save”或“--vanilla”
任何帮助将不胜感激!谢谢!
最佳答案
如果没有这些选项之一,您不能仅使用重定向的标准输入运行 R:
R < foo.R
Fatal error: you must specify '--save', '--no-save' or '--vanilla'
您希望 R 在完成后保存其工作数据(--save)吗?或者不(--不保存)?您可能会发现 --vanilla 适合您的使用。
--vanilla
Combine --no-save, --no-restore, --no-site-file, --no-init-file and --no-environ
我不太清楚如何将参数传递给 Java ProcessBuilder,但也许只是:
processBuilder = new ProcessBuilder().command("/usr/bin/R --vanilla").redirectErrorStream(
true);
或者也许它有设置参数的方法。
关于java - 从java启动R进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20216253/