Rserve异常:握手失败

时间:2012-01-19 11:06:50

标签: java r rserve

我是语言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();
    }

}

}

2 个答案:

答案 0 :(得分:3)

错误表明连接到Rserve后读取立即失败。您的Java代码很好(假设您正在连接到Rserve的本地实例)。问题可能在另一方面 - 检查Rserve是否正在运行(请参阅Rserve FAQ)。您也可以在调试模式下启动Rserve(R中为Rserve(TRUE))以查看服务器端发生的情况。

答案 1 :(得分:0)

如果您在Linux机器上运行RServe,请确保您在/ etc / location中具有名称为“Rserv.conf”且内容为

的配置文件

远程启用

这样可以远程访问RServe