- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我一直在玩 rJava 包,但由于 rJava 似乎不了解 Java 泛型类型,因此我很难创建具有泛型类型参数的 java 对象。如果我有一个像这样的 java 类:
public class A<T> {
private B<T> b;
public A(B<T> b) {
this.b = b;
}
}
我想通过传递一个已经创建的 B 对象(使用实例化的类型参数),使用 .jnew()
从 R session 创建一个 A 对象,但是 rJava 总是给出错误:
java.lang.NoSuchMethodError: <init>
有解决办法吗?
最佳答案
这个问题有很多变化的部分。仔细阅读各个部分的文档,我认为您需要在中断的行上执行此操作:
gesinstance = .jnew("edu/cmu/tetrad/search/Ges", .jcast(dataset, "edu/cmu/tetrad/data/DataSet"))
关键区别在于调用 .jcast
关于第二个论点。 (我没有安装 R,所以我无法对此进行测试 - 如果它不起作用,我将根据您对新错误消息提供的任何反馈更新我的答案。)
那么问题是“为什么会这样?”答案似乎是:
DataReader.parseTabularData
返回类型为 DataSet
的对象正如你所说,但是DataSet
是接口(interface)不是类。这必然意味着返回的实际对象属于某个实现了 DataSet
的类。界面。DataSet
.请参阅 .jnew
的文档( https://www.rforge.net/doc/packages/rJava/html/jnew.html ),特别是对于它们用“...”表示的参数。这会让您引用 .jcall
文档的相应部分( https://www.rforge.net/doc/packages/rJava/html/jcall.html ),然后说明调用 .jcast
的要求( https://www.rforge.net/doc/packages/rJava/html/jcast.html ) 和一些例子。你得到的错误java.lang.NoSuchMethodError: <init>
告诉你 JVM 找不到你调用的构造函数。在您在评论中发布的示例中,这看起来很神秘。 (顺便说一句,编辑您的问题可能会很好,并将该信息包括在内以供后代使用。)代码看起来确实正确,并且了解 Java,我直觉地希望接口(interface)尊重 Java 的多态性。鉴于(无论出于何种原因),R 的接口(interface)在不考虑继承的情况下进行“精确”类型匹配,很明显,由于上面的原因 #1,它不会找到构造函数。
最后,在我对 Tetrad 的有限探索中,我实际上并没有遇到任何使用泛型的 Java 类。事实证明,这完全是转移注意力。如果将来它成为问题,您可能需要检查“Type Erasure”(https://docs.oracle.com/javase/tutorial/java/generics/erasure.html)。如果您在 Java 和 C、C++、Fortran 以及任何 Java 认为“本地”的语言之间进行交互,那么您将通过处理类型删除形式来处理本地代码中的泛型。 rJava 接口(interface)可能有所不同,因为这似乎属于使您陷入当前问题的相同一般结构类型。 (也许以后值得自己赏金!)
关于java - rJava 泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15393351/
由于“rJava”的加载问题,我在加载“Deducer”包时遇到问题。 “rJava”的安装似乎正确完成,但在调用它加载时却失败了。 拜托,任何人都可以阐明一些智慧吗? :) 错误:.onLoad 在
这周我有时间使用与 Java 相关的包。我终于让我的 RWeka 工作了(参见 HERE ),但现在我遇到了 rJava 问题。 包似乎加载正常,但当我加载库时,我得到以下信息: Error in g
为什么 rJava 需要安装整个 JDK 而不仅仅是 JRE? (jvm.dll 在 JRE 中可用) 让我们假设 jvm.dll 的路径和所有其他环境变量都已正确设置。 最佳答案 rJava 包不需
在我的 java 类中,我编写了 3 个测试函数,如下所示: public void try2dStringArray(String[][] arr) { System.out.println
我目前正在开发 R 包以在 R 中集成 java 代码。但是,我在尝试正确调用 java 类方法时遇到问题。目前我已经独立开发了一个java程序,编译成class文件,然后打包成jar文件。我的代码示
我无法在 R 上使用 rjava 解决我的问题。 当我安装 rJava 包并需要它时,我没有任何问题。 install.packages("devtools") install.packages("r
我不是 Java 程序员。我编程 R 和 C++。我有一些想要包含在 R 包中的 Java 代码。该程序的基本原理是: 从标准输入读取数据。 运行 MCMC 链。 输出到文件。 我想将它转换为 R,在
使用 install.packages("rJava") 命令安装 rJava 时,出现以下错误: checking Java support in R... present: interpreter
无法在ubuntu中安装rjava包,R版本是3.1。安装jdk i.7。请分享R的java配置的确切路径。我已经尝试过javareconf -e来设置rjava的env。 以下是 rJava 安装后
我一直在玩 rJava 包,但由于 rJava 似乎不了解 Java 泛型类型,因此我很难创建具有泛型类型参数的 java 对象。如果我有一个像这样的 java 类: public class A {
我正在尝试安装 rJava 以在运行 Linux 的 super 计算机的服务器上执行 MaxEnt(Dismo 程序包)。所有其他包都已成功,但 rJava 继续出错。 我遵循了这个 thread
我在 ubuntu 12.4 server 上使用 rstudio与 r 3.1.1 . rJava 安装成功。但无法加载 rjava 库。我正在使用“rstudio”作为用户。 Loading re
我正在使用 xlsx 包创建工作簿、工作表,将数据写入工作表,然后保存工作簿。但是,当我多次重复这组操作时,我开始出现错误消息: >Error in .jcheck(silent = FALSE) :
Rstudio 的编织按钮无法编织包含 rJava 包的 rmarkdown (Rmd) 文件。但是,如果我使用 rmarkdown::render() ,相同的 Rmd 文件渲染成 html 没有问
我一直在努力解决这个问题。当我从 R 安装 rJava 时,它需要 Java 1.6 而不是 1.8。我使用的是 MAC OS 10.8.5,这些是我已经完成的步骤。 我已经安装了 R。 我的机器上有
我正在运行 RSTudio 版本 1.1.442 和 R3.5。当我尝试加载 rJava 时,出现以下错误; library(rJava) Error: package or namespace lo
这个问题困扰了我一个星期了。我已经从运行在 Ubuntu 服务器 14.04 上的 R 安装了 rJAVA。我像这样将 rJava 包安装为源代码: install.packages("rJava",
有没有办法让 rJava 打印出错误的完整堆栈跟踪,而不仅仅是异常?例如,此代码(尝试从 R 调用 Ambit2 化学信息学库) smrkMan >C" ) res .jcall("C",,"mai
我正在使用名为 CDK 的第三方库.我正在尝试使用 rJava 创建类 Bond 的实例: o1 <- .jnew("org.openscience.cdk.Atom","O") o2 <- .jne
我使用 rJava 将 Java 和 R 集成到我的项目中。 我需要在我的应用程序中加载 GWmodel R 包并通过 Java 计算距离矩阵。 这是我加载 GWmodel 并计算距离矩阵的函数: R
我是一名优秀的程序员,十分优秀!