我试图用rJava在java类中调用一个方法几天,我还没弄清楚我做错了什么。也许这里有人会为我提供一些线索。
情况如下:
我加载库并初始化一个对象(这样可以正常工作):
library(rJava)
.jinit('C:/javatemp/worker.jar')
jobject <- .jnew("worker.concrete")
我列出方法,结果很好:
.jmethods(jobject)
> [1] "public java.util.List worker.concrete.lookup(java.lang.CharSequence)"
我正在准备输入结构,它也可以正常工作:
word <- .jnew("java/lang/String", "a word")
input = .jcast(word, "java/lang/CharSequence", check = TRUE)
但是当我尝试执行该方法时,我得到一个错误,即此方法不存在...
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
有没有人知道如何调用这种方法?
答案 0 :(得分:8)
很抱歉回答了一个老问题,但这也困扰了我一段时间。答案是:;
非原始返回类型的类型规范格式为Lpackage/subpackage/Type;
- 它必须以分号结尾。因此,在上面的示例中,您需要:
out = .jcall(jobject,"Ljava/util/List;","lookup",input)