2

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

}

}

4

2 回答 2

3

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

于 2012-03-05T01:25:34.787 回答
0

如果您在 linux 机器上运行 RServe,请确保在 /etc/ 位置具有名称为“Rserv.conf”且内容为的配置文件

远程启用

这允许远程访问 RServe

于 2013-04-01T10:49:14.750 回答