【问题标题】:Error executing library in Rserve from Java从 Java 执行 Rserve 中的库时出错
【发布时间】:2015-05-31 01:14:00
【问题描述】:

当我从 RStudio 启动 Rserve 并尝试使用 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,因为它很容易模拟,不需要数据库连接。关于如何解决这个问题的任何线索?

【问题讨论】:

  • 我遇到了同样的错误,很可能与远程计算机上的内存不足有关。

标签: java r rjava rserve


【解决方案1】:

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

至于内存设置,你可以一直使用这个技巧

export _JAVA_OPTIONS="-Xmx=2G"

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

【讨论】:

    猜你喜欢
    • 2021-08-26
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    相关资源
    最近更新 更多