当我从Rserve启动RStudio并尝试使用RSclient连接到Rserve时,如以下代码所示:

#Loading Libraries
library(Rserve)
library(RSclient)

#Loading Rserve
Rserve(args='--no-save --slave')

#Open Connection to Rserve and Executing openNPL
conn <- RS.connect(port=6311)
RS.eval(conn,library(openNLP))

一切正常。

但是,如果我尝试从命令行启动Rserve(模拟Java的功能)。作为代码:
#loading Rserve from command line, to simulate what java does.
#Using Mac OS 10.10.2
/Library/Frameworks/R.framework/Resources/bin/R CMD /Library/Frameworks/R.framework/Versions/3.2/Resources/library/Rserve/libs//Rserve --no-save --slave --RS-port 6311

#in RStudio
#Loading Rclient
library(RSclient)

#Loading Rserve
Rserve(args='--no-save --slave')

#Open Connection to Rserve and Executing openNPL
conn <- RS.connect(port=6311)
RS.eval(conn,library(openNLP))

我在RStudio中收到此错误:
rsc_abort: connection closed by peer
Error in RS.eval(conn, library(openNLP)) :
  read error - could not obtain response header

并在命令行中出现此错误:
  Invalid memory access of location 0x110 rip=0x7fff8ea0d5d2

Herehere是类似的问题引用。我最初的问题是RJDBC,而不是openNLP,似乎两者都具有rJava相同。我在这里使用openNLP是因为它易于模拟,无需数据库连接。关于如何解决这个问题的任何线索?

最佳答案

确保为R CMD设置完全相同的参数。确保检查RStudio是否使用完全相同的Java版本。

至于内存设置,您可以随时使用此技巧

export _JAVA_OPTIONS="-Xmx=2G"

设置可用于JVM的内存大小。使用_JAVA_OPTIONS可以强制执行将由JVM使用的设置。

关于java - 从Java在Rserve中执行库时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30552876/

10-10 15:00