我是语言R的新手 并且正在使用RConnection在java中尝试一个简单的程序,但它正在提供此异常
org.rosuda.REngine.Rserve.RserveException: Handshake failed: expected 32 bytes header, got -1
at org.rosuda.REngine.Rserve.RConnection.<init>(RConnection.java:107)
at org.rosuda.REngine.Rserve.RConnection.<init>(RConnection.java:60)
at org.rosuda.REngine.Rserve.RConnection.<init>(RConnection.java:44)
at test.sandeep.main(sandeep.java:9)
RConnection
的控制器中的那些。任何人都可以说出可能出错的地方
包装测试;
import org.rosuda.REngine.Rserve.RConnection;
public class sandeep {
public static void main(String[] str) {
try {
System.out.println("hii");
RConnection c = new RConnection();
System.out.println("hii");
double d[] = c.eval("rnorm(10)").asDoubles();
for (double td : d) {
System.out.println(td);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
答案 0 :(得分:3)
错误表明连接到Rserve后读取立即失败。您的Java代码很好(假设您正在连接到Rserve的本地实例)。问题可能在另一方面 - 检查Rserve是否正在运行(请参阅Rserve FAQ)。您也可以在调试模式下启动Rserve(R中为Rserve(TRUE)
)以查看服务器端发生的情况。
答案 1 :(得分:0)
如果您在Linux机器上运行RServe,请确保您在/ etc / location中具有名称为“Rserv.conf”且内容为
的配置文件远程启用
这样可以远程访问RServe