2013-09-06 3 views
0

У меня возникла проблема с возвратом любого типа массива с .jcall(). Вот мой код.rJava .jcall return type issue

public class Test(){ 
    public static double[] sample(){ 

    double[] nobjarr = new double[5] 
    nobjarr[0] = 1.0; 
    nobjarr[1] = 1.0; 
    nobjarr[2] = 1.0; 
    nobjarr[3] = 1.0; 
    nobjarr[4] = 1.0; 

    return nobjarr; 
} 

} 

В R, я звоню с помощью .jcall

library(rJava)       
.jinit() 
.jaddClassPath("path to .class file")  
objT <- .jnew("Test")  
res <- .jcall(objT,"[D","sample") 

Для этого я получаю сообщение об ошибке сказав «Ошибка в .jcall (objT "[D", "образец"): выборочный метод with signature() [D not found "

ответ

1

Вы пробовали что-то вроде этого:

Test <- J("Test") 
Test$sample() 

Это использует основанный на API отражения, которое в rJava в течение нескольких лет и является гораздо более удобным, чем .jnew, .jcall интерфейс низкого уровня.

+0

Используется отражение, поэтому высокая производительность в производительности !!!! – pommedeterresautee

+0

@pommedeterresautee вы измерили его? –

0

Я не знаю rJava, но похоже, что вы говорили библиотеке искать метод экземпляра, когда метод фактически статичен. Проверьте документацию, чтобы узнать, какой должен быть первый аргумент jcall для статического метода.