我一直在玩rJava包,但由于似乎rJava没有意识到Java泛型类型,所以我在使用泛型类型参数创建java对象时遇到困难。如果我有一个Java类,如:rJava泛型类型
public class A<T> {
private B<T> b;
public A(B<T> b) {
this.b = b;
}
}
我想通过使已经创建(与实例化的类型参数)B的对象来创建使用.jnew()
R对话的一个目的,但是rJava总是给错误:
java.lang.NoSuchMethodError: <init>
有没有解决此问题的方法?
当你调用'.jnew()'时,你使用的确切语法是什么?你传递了它的参数吗?请正确指定它们。 – Brick 2015-09-15 18:44:10
这是一个成功的例子。您需要从[here](http://www.phil.cmu.edu/projects/tetrad_download/download/tetrad-5.2.1-3.jar)(19mb)和示例数据集下载Tetrad jar, charity.txt,从[这里](http://www.phil.cmu.edu/projects/tetrad_download/download/workshop/Data/charity.txt)。设置在R:'setwd(“where/you/put/the/data /”)', 'library(rJava)', '.jinit(“path/to/tetrad-5.2.1-3.jar “)'。所有以下工作:1.'filename = .jnew(“java/lang/String”,“charity.txt”)',2.'datafile = .jnew(“java/io/File”,文件名)', 3.'reader = .jnew(“edu/cmu/tetrad/data/DataReader”)', – 2015-09-15 21:59:19
4.'delim = J(“edu/cmu/tetrad/data/DelimiterType”)',5.'reader $ setDelimiter (delim $ TAB)',6.'dataset = reader $ parseTabular(datafile)'。但以下方法不起作用:7.'gesinstance = .jnew(“edu/cmu/tetrad/search/Ges”,数据集)'。 reader $ parseTabular返回一个DataSet,并且Ges类应该使用DataSet参数创建。不幸的是,这是行不通的。我认为这是因为Ges实现了两个接口GraphSearch和GraphScorer,GraphScorer只是一个接口。在Java源代码中:'public interface GraphScorer double scoreDag(Graph dag); }' – 2015-09-15 22:04:32