2015-05-31 23 views
5

Khi tôi bắt đầu Rserve từ RStudio và cố gắng kết nối với Rserve sử dụng RSclient như trong đoạn code dưới đây:Lỗi thực thi thư viện trong Rserve từ Java

#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)) 

Tất cả các hoạt động ok.

Nhưng nếu tôi cố gắng bắt đầu giải mã từ dòng lệnh (mô phỏng những gì Java làm). Như mã:

#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)) 

tôi nhận được lỗi này trong RStudio:

rsc_abort: connection closed by peer 
Error in RS.eval(conn, library(openNLP)) : 
    read error - could not obtain response header 

Và lỗi này trong dòng lệnh:

Invalid memory access of location 0x110 rip=0x7fff8ea0d5d2 

Herehere cũng tương tự như vấn đề tham khảo. Vấn đề ban đầu của tôi là với RJDBC, không phải với openNLP và có vẻ như cả hai đều có một số chung là rJava. Tôi đã sử dụng openNLP ở đây vì nó dễ mô phỏng, không cần kết nối cơ sở dữ liệu. Bất kỳ đầu mối về cách giải quyết này?

+0

Tôi đã gặp lỗi tương tự và rất có thể liên quan đến thiếu bộ nhớ trên máy từ xa. – jangorecki

Trả lời

0

Đảm bảo đặt chính xác các thông số giống nhau cho R CMD của bạn. Hãy chắc chắn kiểm tra xem RStudio có sử dụng chính xác cùng một phiên bản Java hay không.

Đối với các thiết lập bộ nhớ, bạn luôn có thể sử dụng thủ thuật này

export _JAVA_OPTIONS="-Xmx=2G" 

để thiết lập kích thước bộ nhớ có sẵn cho JVM. Sử dụng _JAVA_OPTIONS bạn có thể thực thi các cài đặt sẽ được JVM sử dụng.

Các vấn đề liên quan