Сброс соединения Java.net с помощью Rserve

Я получаю исключение при попытке запустить программу R через Java. Соединение устанавливается, но затем возникает ошибка при запуске оценки кода 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

Я уже начал Rserve в R.

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)

person Vini    schedule 31.08.2016    source источник


Ответы (1)


Проблема в том, что isConnected не гарантировать, что после установления соединения он сообщит о правильном состоянии:

Обратите внимание, что в настоящее время это состояние не проверяется на месте, то есть, если соединение оборвалось из-за внешнего события, это не отражается флагом.

Вам нужно проверить журнал Rserve, чтобы убедиться, что запрос был успешно обработан.

person vsminkov    schedule 31.08.2016
comment
я не могу выполнить приведенный выше код, потому что установка соединения занимает слишком много времени - person Vini; 05.09.2016