首页 > 解决方案 > 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;
}

任何想法表示赞赏!

标签: javarrjava

解决方案


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

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


推荐阅读