I am facing an issue with returning any type of array with .jcall(). Here is my code.

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;
}

}

In R, I am calling using .jcall

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

For this I get an error saying "Error in .jcall(objT, "[D", "sample") :method sample with signature ()[D not found"

有帮助吗?

解决方案

Have you tried something like this:

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

This uses the reflection based API that is in rJava for several years now and is much more convenient than the low level .jnew, .jcall interface.

其他提示

I don't know rJava, but it looks like you were telling the library to look for an instance method when the method is actually static. Check the documentation to see what the first argument to jcall should be for a static method.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top