Исключение за исключением: рукопожатие не удалось - PullRequest
2 голосов
/ 19 января 2012

Я новичок в языке R и пробовал простую программу в Java, используя RConnection, но это дает исключение

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 ]

3 голосов
/ 05 марта 2012

Ошибка говорит о том, что чтение не удалось сразу после подключения к Rserve.Ваш Java-код в порядке (если вы подключаетесь к локальному экземпляру Rserve).Проблема, скорее всего, с другой стороны - проверьте, что Rserve работает (см. Rserve FAQ ).Вы также можете запустить Rserve в режиме отладки (Rserve(TRUE) в R), чтобы посмотреть, что происходит на стороне сервера.

0 голосов
/ 01 апреля 2013

Если вы запускаете RServe в Linux, убедитесь, что у вас есть файл конфигурации в / etc / location с именем "Rserv.conf" и содержимым

дистанционное включение

Это позволяет удаленный доступ к RServe

...