【发布时间】:2013-09-02 13:51:37
【问题描述】:
我正在尝试从 Java 中调用一些 r 代码,就像这样:
private void makeMatrix() throws ScriptException {
try {
Runtime.getRuntime().exec(" Rscript firstscript.r");
System.out.println("Script executed");
} catch (IOException ex) {
System.out.println("Exception");
System.out.println(ex.getMessage());
}
}
好吧,我得到了“执行脚本”的打印。
我的(好吧,不是我的,只是为了测试)r-Code 相当简单,几乎只是为了看看它是否有效:
x=seq(0,2,by=0.01)
y=2*sin(2*pi*(x-1/4))
plot(x,y)
所以,它不应该做的只是画一个鼻窦。
但是,不应该有某种弹出窗口可以让您实际看到情节吗? 因为没有。我做错了什么?
编辑:为了响应我来到这里的 cmets,我编辑了 r 文件,添加:
jpeg('rplot.jpg')
plot(x,y)
dev.off()
到它。
但是,如果我尝试在我的系统上找到 rplot.jpg,它根本不存在。
【问题讨论】:
-
你应该明确地为情节声明一个新设备。在 OSX 上,函数是
quartz,在 Windows 上是windows,在 *nix 上我相信你想要X11。使用例如png将绘图保存到文件中然后从 Java 打开文件可能更有意义。 -
我看了他们两个。问题是,jar 必须在 windows 和 linux 上是可执行的,而我根本没有管理它。
-
阅读(并实施)所有 When Runtime.exec() won't 的建议。那可能会解决问题。如果不是,它应该提供更多关于失败原因的信息。然后忽略它引用
exec并使用ProcessBuilder构建Process。还要将String arg拆分为String[] args以说明本身包含空格的参数。 -
如果我收到错误消息或异常,我会很高兴,但我怎么能得到我的打印但我在 rscript 中制作的文件不在我的系统上?
标签: java r runtime.exec