Java.net使用Rserve时连接重置。

3

当我尝试通过Java运行R程序时,我遇到了异常。虽然连接已经建立,但是在R代码评估开始时出现错误。

Rconnection connection = new RConnection();

System.out.println(String.valueOf(connection.isConnected())); //Output: True
connection.eval("source('C:\\Users\\Vini\\Documents\\test.R')"); //Exception in this line

我已经在 R 中启动了 Rserve

java.net.SocketException: Connection reset
  at java.net.SocketInputStream.read(SocketInputStream.java:209)
  at java.net.SocketInputStream.read(SocketInputStream.java:141)
  at java.net.SocketInputStream.read(SocketInputStream.java:127)
  at org.rosuda.REngine.Rserve.protocol.RTalk.request(RTalk.java:213)
  at org.rosuda.REngine.Rserve.protocol.RTalk.request(RTalk.java:180)
  at org.rosuda.REngine.Rserve.protocol.RTalk.request(RTalk.java:250)
  at org.rosuda.REngine.Rserve.RConnection.eval(RConnection.java:231)
  at integration.Integration.main(Integration.java:36)
org.rosuda.REngine.Rserve.RserveException: eval failed
  at org.rosuda.REngine.Rserve.RConnection.eval(RConnection.java:234)
  at integration.Integration.main(Integration.java:36)
1个回答

0
问题在于isConnected不能保证在连接建立后它会报告正确的状态:

请注意,目前不会即时检查此状态,也就是说,如果连接由外部事件中断,则该标志不会反映此情况

您需要检查Rserve日志以确保请求已成功处理


我无法执行上面的代码,因为建立连接花费的时间太长了。 - Vini

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接