我是'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中非常重要!

关于java - rJava .jnew java.lang.NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51152150/

10-10 23:52