rJava - .jcall 调用问题:未找到带有签名的方法

rJava - .jcall calling issue: method with signature not found

几天来,我一直在尝试使用 rJava 调用 java class 中的一个方法,但我还没有弄清楚我做错了什么。也许这里有人会为我提供一些线索。

情况是这样的:

  1. 我加载库并初始化一个对象(工作正常):

    library(rJava)
    .jinit('C:/javatemp/worker.jar') 
    jobject <- .jnew("worker.concrete")
    
  2. 我列出了方法并得到了很好的结果:

    .jmethods(jobject)
    >  [1] "public java.util.List worker.concrete.lookup(java.lang.CharSequence)"  
    
  3. 我正在准备也能正常工作的输入结构:

    word <- .jnew("java/lang/String", "a word")
    input = .jcast(word, "java/lang/CharSequence", check = TRUE)
    
  4. 然而,当我尝试执行该方法时,出现错误,提示该方法不存在...

    out = .jcall(jobject,"Ljava/util/List","lookup",input)
    > Error in .jcall(jobject, "Ljava/util/List", "lookup", input) : 
    method lookup with signature (Ljava/lang/CharSequence;)Ljava/util/List not found
    

有谁知道如何调用这样的方法吗?

很抱歉回答一个老问题,但这也困扰了我一段时间。答案是:;

非基本 return 类型的类型规范格式为 Lpackage/subpackage/Type; - 它必须以分号结尾。所以在上面的例子中,你需要:

out = .jcall(jobject,"Ljava/util/List;","lookup",input)