rJava.jnew java.lang.NoSuchMethodError

rJava .jnew java.lang.NoSuchMethodError

我是 'rJava' 的新手,遇到了几个小时的麻烦。

library(rJava)
.jinit(classpath="C:\Users\XXX\desktop\example")
.jclassPath()
# [1] "C:\Users\XXX\Documents\R\win-library\3.5\rJava\java"          
# [2] "C:\Users\XXX\desktop\example" 
s=.jnew("java/lang/String", "Hello World")
.jcall(s, "I", "length")
# 11
.jcall('Exampletest', returnSig='I', method='test')
# 1
.jnew('Exampletest', 3)
# Error in .jnew("Exampletest", 3) : java.lang.NoSuchMethodError: <init>

这很奇怪,因为我已经成功调用了函数'test',但仍然无法新建对象。

java代码在这里

public class Exampletest {

    static public int test() {
        return 1;
    }

    public Exampletest(int x) {
        this.x = x;
    }

    private int x;
}

如有任何想法,我们将不胜感激!

啊哈,我去年开始用rJava的时候就遇到过这个问题。这个问题很简单,因为在 r 中,3 是一个数字而不是整数。所以你应该使用3L而不是3

顺便说一句,如果参数在 java 中具有 long 类型,3L 将不再起作用。您应该再次使用 .jlong(3) 而不是 3L。函数的签名在 rJava 中非常重要!